我正尝试在B列中输入名称时,让Excel工作表自动在A列中输入字符串。
我在单元格A1中使用这个公式,使它完全按照Google表格中的预期工作:
={"P#";ArrayFormula(IF(LEN(B2:B), SWITCH(B2:B,"Alpha", "PX", "Bravo", "P1", "Charlie", "P7", "!!"), ""))}
字符串
但我没有看到一个简单的方法来做同样的Excel短复制/粘贴一个略有不同的(和大)嵌套的IF混乱到每个连续的单元格。我相信我应该能够有一个脚本运行时,一个单元格中的B列被修改,但我没有使用VBS之前。
下面的脚本似乎接近我所需要的,因为它只在单元格B2或以下输入文本时运行,但它只返回默认情况。
Sub Worksheet_Change(ByVal Target As Range)
If Not Target.Column = 2 Then Exit Sub
Application.EnableEvents = False 'prevent endless loop
On Error GoTo Finalize 'resume events
Dim LastRow As Long, i As Long, pName As String 'initialize variables
LastRow = Range("B" & Rows.Count).End(xlUp).Row 'get range
For i = 2 To LastRow
pName = Range("B" & i).Value
Select Case pName
Case pName = "Alpha", pName = "Bravo"
Range("A" & i).Value = "P1"
Case pName = "Charlie"
Range("A" & i).Value = "P2"
Case Else 'other values
Range("A" & i).Value = "!!"
End Select
Next i
Finalize:
Application.EnableEvents = True
End Sub
型
给定输入:Alpha, Charlie, Bravo, Xenon
预期输出为:P1, P2, P1, !!
但是输出结果是:!!, !!, !!, !!
任何帮助/澄清将不胜感激。
1条答案
按热度按时间vfh0ocws1#
问题似乎是我对VBS不熟悉。
我已经纠正了switch语句的语法,现在它似乎可以工作了:
字符串