我在工作簿几片,其中,如果有一个列表中的号码的倍数我需要超过1。这相邻的列移动的相邻列中的片材在公式中正在使用。我希望公式引用在新的位置值。
这是代码前的表
这是理想的结果,所有的那些和五岁以下儿童有自己的数字移动超过1列,但公式仍引用的单元格。
我已经写了:
For i = 1 To WS_Count
sheet_name = ActiveWorkbook.Worksheets(i).Name
row_count = Worksheets(sheet_name).Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row
For x = 11 To row_count
cell = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1)
If cell = "" Then GoTo NextIteration
If ActiveWorkbook.Worksheets(sheet_name).Cells(x - 1, 1) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1) Or ActiveWorkbook.Worksheets(sheet_name).Cells(x + 1, 1) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 1) Then
ActiveWorkbook.Worksheets(sheet_name).Cells(x, 5) = ActiveWorkbook.Worksheets(sheet_name).Cells(x, 4)
ActiveWorkbook.Worksheets(sheet_name).Cells(x, 4).ClearContents
End If
NextIteration:
Next x
Next i
切割是不是在多张工作正常。它不恰当地移动到新的工作表。
是否有移动单元格的值从公式在多张纸上的参照细胞的方法吗?
你可以切值了:
Dim ws As Worksheet, i As Long, x As Long, row_count As Long, v
For i = 1 To WS_Count
Set ws = ActiveWorkbook.Worksheets(i)
row_count = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row
For x = 11 To row_count
v = ws.Cells(x, 1).Value
If Len(v) > 0 Then
If ws.Cells(x - 1, 1) = v Or ws.Cells(x + 1, 1) = v Then
ws.Cells(x, 4).Cut ws.Cells(x, 5)
End If
End If
Next x
Next i
为什么不能复制公式? https://docs.microsoft.com/en-us/office/vba/api/excel.range.formula
该算法
for....
if ....
You can copy formula to the adjacent cell, then empty the cell
如果直接从一个单元格复制公式至另一个,公式不会改变