[英]VBA Macro help need for Excel
您好,我希望这会有意义,
我发现此脚本中,如果一个字母或数字在一个单元格中,它将在另一个单元格中输入一个值
我想知道如何为它添加多个规则。目前,如果在单元格中输入C或9,那么它将产生句子“此处将显示单词”
我希望它显示在不同的单元格而不是相邻的单元格中,而且我希望能够在列表中添加不同的字母以输出不同的值。
例如
当宏在列E中运行时,单元格在列A中具有此输出
C或9“ Word0”
HELLO或GOODBYE“ Word1”
粉色或黄色“ Word2”
等等,任何帮助都将非常有用,因为我是VB和Macros的新手。
下面的代码只适用于C或9,我认为我可以添加.Forumula到下面的代码中以添加更多单词,但是没有用
Sub CheckValues()
Application.ScreenUpdating = False
With Range("A2", Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
.Formula = "=IF(MIN(FIND({""C"",9},A2&""C9""))<=LEN(A2),""Word0"","""")"
.Value = .Value
End With
Application.ScreenUpdating = True
End Sub
如果您要使用VBA方法,则不需要使用.Formula
。 VBA具有Select Case
构造,可让您评估表达式并根据表达式的结果执行一系列选择。
尝试这个:
Sub CheckValues()
Application.ScreenUpdating = False
Dim startRow As Integer
startRow = 2
Dim endRow As Integer
endRow = Range("A2").End(xlDown).row
Dim row As Integer
Dim word As String
For row = startRow To endRow
Select Case Split(Cells(row, 1).Value, " ")(0)
Case "C", "9"
word = "Word0"
Case "HELLO", "GOODBYE"
word = "Word1"
Case "Pink", "Yellow"
word = "Word2"
Case Else
word = ""
End Select
Cells(row, 5).Value = word
Next row
Application.ScreenUpdating = True
End Sub
在为a列添加更多选项时,只需重复Case *expression*
模式。
或者,您可以只修改现有公式,然后执行不带循环的操作:
Sub SO()
With Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).Offset(, 3)
.FormulaR1C1 = "=IFERROR(""Word""&ROUNDDOWN((MATCH(LEFT(RC[-3],SEARCH("" "",RC[-3])-1),{""C"",""9"",""HELLO"",""GOODBYE"",""Pink"",""Yellow""},0)/2)-0.1,0),"""")"
.Value = .Value
End With
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.