抱歉,我是VBA的新手。 Vlookup需要X和X列。 Y工作正常。但是,对于Z列,我试图计算B列中的名称数量,但是一个错误不断弹出。我想知道为什么?
Dim lastrow As Long
lastrow = Range("A2").End(xlDown).Row
Range("X2:X" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-23],'Sheet2'!R1C1:R25000C10,7,0)"
Range("Y2:Y" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-24],'Sheet2'!R1C1:R25000C10,2,0)"
Range("Z2:Z" & lastrow).FormulaR1C1 = "=LEN(RC[-22]-LEN(SUBSTITUTE(RC[-22], "";"", ""))+1"
Columns("X:Z").EntireColumn.AutoFit
基本上,我试图实现的目标如下。 Z列将自动填充B列中名称的出现
答案 0 :(得分:1)
我认为你在函数字符串中缺少一个括号,以及空字符串的转义引号,所以它应该是:
Range("Z2:Z" & lastrow).FormulaR1C1 = "=LEN(RC[-22])-LEN(SUBSTITUTE(RC[-22], "";"", """"))+1"
答案 1 :(得分:1)
我意识到这个答案没有回答你的问题,但至少以下代码的目的是相同的。如果RGA先生指出范围内有空白或合并的单元格,那么为了解决问题,我改变了制定变量的方式Last_Row
Sub Count_Name()
Dim i As Long, Last_Row As Long
With Sheets("Sheet1")
'It won't be a problem anymore if there are blanks or merged cells in the range using this line
Last_Row = Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To Last_Row
If .Cells(i, "A") = "" Then
.Cells(i, "B") = 0
Else
.Cells(i, "B") = Len(.Cells(i, "A")) - Len(Replace(.Cells(i, "A"), ";", "")) + 1
End If
Next i
End With
End Sub
这里我假设字符串名称在列A 中,名称数量在列B 中,并且两个数据都在 Sheet1中即可。上述代码的等效Excel公式是
=LEN(A2) - LEN(SUBSTITUTE(A2, ";", "")) + 1