VBA代码,用于将列移到公式上方并维护公式
大家好,这是我的代码:VBA代码,用于将列移到公式上方并维护公式,vba,excel,Vba,Excel,大家好,这是我的代码: Sub Biz1_Shift_OnePeriod() 'Shift all values one period to the left 'Message Box Question Ans = MsgBox("Update data by one year?", vbYesNo + vbQuestion, "Data Update") If Ans = vbNo Then Exit Sub 'Turn off screen up
Sub Biz1_Shift_OnePeriod()
'Shift all values one period to the left
'Message Box Question
Ans = MsgBox("Update data by one year?", vbYesNo + vbQuestion, "Data Update")
If Ans = vbNo Then Exit Sub
'Turn off screen updating & calculation to make code run faster
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim CopyFromWks As Worksheet
Dim CopyToWks As Worksheet
Dim j As Integer
Dim C As Range
'---------------------------------------------------------------------
'Business - Balance Sheet
'
'
'Set the worksheet
Sheets("Balance Sheet").Select
Range("A2").Select
Set CopyToWks = Sheets("Balance Sheet")
Set CopyFromWks = Sheets("Balance Sheet")
'
'Copy data loop from 2nd Historical to 3rd Historical
Set Copyfrom = CopyFromWks.Range("L:L")
Set Copyto = CopyToWks.Range("I:I")
For i = 1 To 1
For j = 1 To 95
For Each C In Copyfrom.Cells(j, i)
If C.Locked = False Then
Copyto(j, i).Value = Copyfrom(j, i).Value
End If
Next
Next
Next
'
'Copy data loop from 1st Historical to 2nd Historical
Set Copyfrom = CopyFromWks.Range("O:O")
Set Copyto = CopyToWks.Range("L:L")
For i = 1 To 1
For j = 1 To 95
For Each C In Copyfrom.Cells(j, i)
If C.Locked = False Then
Copyto(j, i).Value = Copyfrom(j, i).Value
End If
Next
Next
Next
'
'Set Historical Yr 1 to Zero
Set Copyto = CopyToWks.Range("O:O")
For i = 1 To 1
For j = 1 To 95
For Each C In Copyfrom.Cells(j, i)
If C.Locked = False Then
Copyto(j, i).Value = 0
End If
Next
Next
Next
'
'Set Current equal to Zero
Set Copyto = CopyToWks.Range("R:R")
For i = 1 To 1
For j = 1 To 95
For Each C In Copyto.Cells(j, i)
If C.Locked = False Then
Copyto(j, i).Value = 0
End If
Next
Next
Next
我要做的是将我的列移到左边。我认为复制粘贴方法可以,现在我将最后一列设置为0。但是,我需要最后一列来保留它的所有公式,但不能从任何数据源提取。我想出了一个主意,创建另一个列,该列将被隐藏并存储所有公式,并在宏被触发时进行转换。我想问你们,是否有更好的方法来解决这个问题,并帮助大家集思广益 试试看
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
试一试
你们的公式是什么样的?@用户353598756我的公式是这样的:我的公式是这样的:我的公式是这样的::=IfRoR(如果(P$4=“4.10 10 10 10 10 10年10月4)我的公式是这样的:我的公式是这样的:我的公式是这样的:我的公式是:=IfRoR(如果(如果)(如果)(如果)If4=4=1120,索引(B1HY1)(B1HY1)(B1HY1!$A)A)A)A!A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A 3$3$3$3:3$3$3$3$3$3$3$3$3$3$3$3$3:F:F:F$3$3$3$3$3$3:F(索引(B1HY1)索引(B1HY1)索引(B1HY300,0),5)你试过@MakPo solution吗?@user3598756我正在测试。如果行得通的话,我会给你回电的。如果行得通的话,回电给他,并把他的回答标记为接受!你们的公式是什么样的?@用户353598756我的公式是这样的:我的公式是这样的:我的公式是这样的::=IfRoR(如果(P$4=“4.10 10 10 10 10 10年10月4)我的公式是这样的:我的公式是这样的:我的公式是这样的:我的公式是:=IfRoR(如果(如果)(如果)(如果)If4=4=1120,索引(B1HY1)(B1HY1)(B1HY1!$A)A)A)A!A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A$A 3$3$3$3:3$3$3$3$3$3$3$3$3$3$3$3$3:F:F:F$3$3$3$3$3$3:F(索引(B1HY1)索引(B1HY1)索引(B1HY300,0),5)你试过@MakPo solution吗?@user3598756我正在测试。如果行得通的话,我会给你回电的。如果行得通的话,回电给他,并把他的回答标记为接受!