Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码,用于将列移到公式上方并维护公式_Vba_Excel - Fatal编程技术网

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我正在测试。如果行得通的话,我会给你回电的。如果行得通的话,回电给他,并把他的回答标记为接受!