以下代码的作用是获取一列数据,并通过在电子表格中移动数据将其除以100。这里的问题是有多个(非连续的)数据列需要除以100(例如)。
LastRow = Range("K" & Rows.Count).End(xlUp).Row
Columns("K:K").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveWindow.SmallScroll Down:=18
Range("K15").Select
ActiveCell.FormulaR1C1 = "=RC[1]/100"
Range("K15").AutoFill Destination:=Range("K15:K" & LastRow)
Range("K15:K" & LastRow).Select
Selection.Copy
Range("L15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("K:K").Select
有时会有连续的列(例如列K到N)需要除以100.(我认为)代码的设置方式,我不能一次分割多列数据...... < / p>
我该怎么做呢?如果对这种方法进行编码有一种完全不同的方式,使它适用于多个细胞,我就是耳朵(或者在这种情况下是眼睛)
-Jake
答案 0 :(得分:3)
使用值数组,处理缩小,然后将新的缩减值批量加载到工作表中。
dim i as long, j as long, arr as variant
with worksheets("sheet1")
arr = .range(.cells(1, "K"), .cells(.rows.count, "N").end(xlup)).value2
for i=lbound(arr, 1) to ubound(arr, 1)
for j=lbound(arr, 2) to ubound(arr, 2)
arr(i, j) = cdbl(arr(i, j) / 100)
next j
next i
.cells(1, "K").resize(ubound(arr, 1), ubound(arr, 2)) = arr
end with
此方法假设您只插入一列来帮助处理;它会覆盖一切。
答案 1 :(得分:1)
您可以使用PasteSpecial()
:
Range("A1").Copy ' say cell "A1" content is 100
Range("K1", Cells(Rows.Count, "N").End(xlUp)).PasteSpecial Paste:=xlPasteValues, Operation:=xlDivide
将Range("A1")
更改为存储要除去的值的任何单元格