循环公式在Excel VBA中

我想循环一个公式,而不是使用filldown因为我有两个公式取决于列A的单元格中的文本的长度。

我的两个公式就像

.Range("C2").Formula = "=CHAR(83)&CHAR(45)&LEFT(A2,LEN(A2)-9)&CHAR(45)&UPPER(MID(A2,4,LEN(A2)-8))&CHAR(32)&D2&E2"

.Range("C2").Formula = "=LEFT(A2,LEN(A2)-9)&CHAR(45)&UPPER(MID(A2,8,LEN(A2)-12))&CHAR(32)&D2&E2"

这是我迄今为止。

 Sub AddFormulas() Application.ScreenUpdating = False Dim aCell As String Dim cCell As String Dim dCell As String Dim eCell As String Dim rowStart As Integer Dim aCol As Integer Dim cCol As Integer Dim dCol As Integer Dim eCol As Integer Dim LastRow As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row rowStart = 2 aCol = 1 cCol = 3 dCol = 4 eCol = 5 'Range("A2") aCell = Cells(rowStart, aCol).Address(RowAbsolute:=False, _ ColumnAbsolute:=False) 'Range("C2") aCell = Cells(rowStart, cCol).Address(RowAbsolute:=False, _ ColumnAbsolute:=False) 'Range("D2") dCell = Cells(rowStart, dCol).Address(RowAbsolute:=False, _ ColumnAbsolute:=False) 'Range("E2") eCell = Cells(rowStart, eCol).Address(RowAbsolute:=False, _ ColumnAbsolute:=False) With ThisWorkbook.Sheets("Sheet1") .Range(cCell).Formula = "=CHAR(83)&CHAR(45)&LEFT(aCell,LEN(aCell)-9)&CHAR(45)&UPPER(MID(aCell,4,LEN(aCell)-8))&CHAR(32)&(dCell)&(eCell)" End With Application.ScreenUpdating = True End Sub 

谢谢

您还没有解释字符的数量来决定使用哪个公式,您可以使用IF语句来确定使用LEN的单元格的字符长度。然后,您可以将公式只用一行代码发布到整个范围,如Excel足够聪明,可以逐行增加。 这里是一个例子:

 Range("B1:B" & Range("A" & Rows.Count).End(xlUp).Row).Formula = "=IF(LEN(A1)=2,123,987)" 

这将在列B中放置123,其中列A中的对应行具有2个字符的长度,否则将input987。

LEN(A1)=2更改为触发第一个公式的长度,将123更改为第一个公式,将987更改为所需的第二个公式。 如果您正在testing列A以外的任何单元格,请在公式的LEN部分中进行更改。

最后,你为什么要这么复杂呢? 为什么CHAR(83)&CHAR(45)代替"S-" ,如果你把所有东西都放在ASCII代码中,它将会更难维护。