EXCEL非规整数据无法通过拖动而自动填充公式的脚本方法
2016-12-16 11:28
671 查看
首先,在做EEPROM,FLASH等check工作时,会遇到数据结构块不是16的整数倍,这时候在EXCEL中无法通过其提供的下拉拖动式方法自动填充公式,那只能手动编写。对于三五十行还好,但对于成千上万行的数据转换公式来说,无疑效率大打折扣。现备份一份脚本代码,供以后再遇到此类问题时的参考。
dim row
dim colum, col
dim index
dim str, calStr, colLabel
dim colName
dim resRow, resCol
dim srcRow, srcCol
dim rngStr, rngStr1, rngStr2
dim indexArray, i
dim mainStr(407)
colName = "CDEFGHIJKLMNOPQR"
REM str = ""
REM for row = 14 to 246 step 1
REM for colum = 1 to 16 step 2
REM str = str&"="&mid(colName, colum, 1)&row&"+"&mid(colName, (colum+1),1)&row&"*256"&vbCrlf
REM next
REM next
REM calStr = ""
REM '=if((),(),()) &
REM for row = 900 to 949 step 1
REM for colum = 1 to 14 step 1
REM colLabel = mid(colName, colum, 1)& row
REM if(colum = 1)then
REM calStr = calStr & "="
REM End If
REM calStr = calStr & "if((HEX2DEC(" & colLabel & ")<>0), CHAR(HEX2DEC(" & colLabel & ")), " & chr(34) & chr(34) & ")" & " & "
REM next
REM calStr = mid(calStr, 1, Len(calStr)-3)
REM calStr = calStr & vbCrlf
REM next
calStr = ""
col = 13 ' "O"
srcRow = 218
indexArray = 0
For row = 1 To 400 Step 1
If col > 16 Then
col = 1
srcRow = srcRow + 1
End If
rngStr = Mid(colName, col, 1) & srcRow
mainStr(indexArray) = rngStr
indexArray = indexArray + 1
col = col + 1
Next
calStr = ""
colName = " YAGAO"
i = 0
for row = 219 to 251 step 2
calStr = calStr & "=HEX2DEC(" & mainStr(i) & ")+Hex2Dec(" & mainStr(i+1) & ")*256" & space(136-33) & _
"=Hex2Dec(" & mainStr(i+8) & ")+Hex2Dec(" & mainStr(i+9) & ")*256" & space(136-33) & _
"=Hex2Dec(" & mainStr(i+16) & ")+Hex2Dec(" & mainStr(i+17) & ")*256" & vbCrlf
calStr = calStr & "=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+2) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+3) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+4) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+5) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+6) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+7) & ") " & _
"=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+10) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+11) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+12) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+13) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+14) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+15) & ") " & _
"=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+18) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+19) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+20) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+21) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+22) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+23) & ")" & vbCrlf
i = i + 24
next
set fs=createobject("scripting.filesystemobject")
set f =fs.opentextfile("e:\text.txt",8)
f.writeblanklines(1)
f.writeline calStr
f.close
set f =nothing
set fs=nothing
dim row
dim colum, col
dim index
dim str, calStr, colLabel
dim colName
dim resRow, resCol
dim srcRow, srcCol
dim rngStr, rngStr1, rngStr2
dim indexArray, i
dim mainStr(407)
colName = "CDEFGHIJKLMNOPQR"
REM str = ""
REM for row = 14 to 246 step 1
REM for colum = 1 to 16 step 2
REM str = str&"="&mid(colName, colum, 1)&row&"+"&mid(colName, (colum+1),1)&row&"*256"&vbCrlf
REM next
REM next
REM calStr = ""
REM '=if((),(),()) &
REM for row = 900 to 949 step 1
REM for colum = 1 to 14 step 1
REM colLabel = mid(colName, colum, 1)& row
REM if(colum = 1)then
REM calStr = calStr & "="
REM End If
REM calStr = calStr & "if((HEX2DEC(" & colLabel & ")<>0), CHAR(HEX2DEC(" & colLabel & ")), " & chr(34) & chr(34) & ")" & " & "
REM next
REM calStr = mid(calStr, 1, Len(calStr)-3)
REM calStr = calStr & vbCrlf
REM next
calStr = ""
col = 13 ' "O"
srcRow = 218
indexArray = 0
For row = 1 To 400 Step 1
If col > 16 Then
col = 1
srcRow = srcRow + 1
End If
rngStr = Mid(colName, col, 1) & srcRow
mainStr(indexArray) = rngStr
indexArray = indexArray + 1
col = col + 1
Next
calStr = ""
colName = " YAGAO"
i = 0
for row = 219 to 251 step 2
calStr = calStr & "=HEX2DEC(" & mainStr(i) & ")+Hex2Dec(" & mainStr(i+1) & ")*256" & space(136-33) & _
"=Hex2Dec(" & mainStr(i+8) & ")+Hex2Dec(" & mainStr(i+9) & ")*256" & space(136-33) & _
"=Hex2Dec(" & mainStr(i+16) & ")+Hex2Dec(" & mainStr(i+17) & ")*256" & vbCrlf
calStr = calStr & "=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+2) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+3) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+4) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+5) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+6) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+7) & ") " & _
"=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+10) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+11) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+12) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+13) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+14) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+15) & ") " & _
"=" & chr(34) & "20" & chr(34) & " & HEX2DEC(" & mainStr(i+18) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+19) & ") & " & chr(34) & "-" & chr(34) & _
" & Hex2dec(" & mainStr(i+20) & ") & " & chr(34) & " " & chr(34) & _
" & Hex2dec(" & mainStr(i+21) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+22) & ") & " & chr(34) & ":" & chr(34) & _
" & Hex2dec(" & mainStr(i+23) & ")" & vbCrlf
i = i + 24
next
set fs=createobject("scripting.filesystemobject")
set f =fs.opentextfile("e:\text.txt",8)
f.writeblanklines(1)
f.writeline calStr
f.close
set f =nothing
set fs=nothing
相关文章推荐
- 如何通过 Visual C# 使 Excel 自动执行操作以使用数组来填充或获取某区域中的数据
- linux下通过脚本实现自动重启程序的方法
- [金格在线编辑]金格Excel在线编辑性能提升方法之一--利用POI在后台填充数据
- Linux下通过FTP脚本自动备份数据到windows系统
- excel里面数据自动填充自动增进,自动复制数据填充
- excel自动填充脚本(awk)
- 禁止excel填充公式时自动累加
- Excel 常用的2个宏(拆分单元格并自动填充数据、取满足条件的值连接成字符串)
- C#也能动态生成Word文档并填充数据, 导出EXCEL 方法
- excel大数据自动增加的方法
- 配置tomcat通过doget servlet 方法 向jquery脚本发送json格式数据
- C#和Asp.net下调用Excel后无法自动关闭进程的解决方法
- excel表中多位位数字设置成文本后不能自动填充问题的解决方法
- 通过QC远程运行QTP脚本,QTP自动崩溃关闭的解决方法
- linux 通过脚本实现自动重启程序的方法
- QTP在录制脚本的时候会将鼠标点击过的对象自动添加到对象库中,而那些未被点击过的对象将不会被添加,导致针对某一对象手动添加的脚本运行不通过,因此需要手动把测试对象添加到对象库中,方法如下:
- EXCEL取消"自动更新链接"提示产生的无法打开错误_解决方法
- Linux 通过脚本实现远程数据的自动备份
- 【Java】内部类访问的外部变量定义成final (数据保持一致,外部修改后无法通知内部,编译的时候会通过构造方法传进来) Java内部类一般访问不了外部变量
- 利用PS脚本自动删除7天前建立的数据-方法2!