Excel - 如何沿一行增加公式引用

时间:2015-05-14 10:30:24

标签: excel vba excel-vba

我在A列的大约1000个单元格中保存了很长的文本字符串。

我创建了以下公式(FindN包含了一些VBA),放在单元格B1中:

=MID($A1,FindN("978",$A1,1),13)

我可以将这个公式复制到B列就好了。但是,我还希望在每一行中复制此公式,例如,整行中单元格的公式应如下所示:

单元格C1:=MID($A1,FindN("978",$A1,2),13)

单元格D1:=MID($A1,FindN("978",$A1,3),13)

小区E1:=MID($A1,FindN("978",$A1,4),13)

等...

如果我在单元格B1中复制整行的公式,它将复制=MID($A1,FindN("978",$A1,1),13) - 但我需要“1”每次增加1。

我想我需要稍微调整一下公式,但是如何做到这一点有点迷失......

非常感谢任何帮助。如果我要进一步澄清,请告诉我。

3 个答案:

答案 0 :(得分:2)

使用COLUMN() - 它给出了当前单元格的列号。您可以根据需要对此进行抵消。

在这种情况下,对于递增的数字,使用COLUMN() - 1,以便在B中你有1,C; 2等。

答案 1 :(得分:1)

试试这个:

Sub Fill()

With Sheets("Sheet1")
    For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
        .Cells(i, 1).FormulaR1C1 = "=MID($A1,FindN(" & _
                     Chr(34) & "978" & Chr(34) & _
                     ",$A1," & i - 1 & "),13)"
    Next i
End With

End Sub

答案 2 :(得分:1)

您需要使用CELL公式来获取当前列号。尝试这样的事情:

=MID($A1,FindN("978",$A1,CELL("column";A1)+1),13)

我没有英文Excel,我不确定CELL forumla中的第一个参数是“列”