循环公式在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代码中,它将会更难维护。