我已经搜索并找到了该场景各个部分的多个答案 但我似乎无法将所有内容整合在一起。
我得到的电子表格的姓,名列在A列中,然后在S列中是分配给该原始个人的人的名字。我需要在S列中搜索两个特定名称,然后根据A列中的姓氏开头,将S列中的条目更改为其他名称。
因此,在上面的示例中,如果条目为Bert,则在S列中检查列A,并且该值是否以A-K开头,将Grover替换为Bert,如果该值以L-Z开头,则替换为Elmo。 并且对于S列,根据A-K = Elmo和L-Z = Grover查找并替换Ernie。 将其他条目保留在S列中。
最后,如果在S列中的值为Grover,则将T列中其旁边的单元格更改为Example1 如果是Elmo,则将T列中in旁边的单元格更改为Example2 否则,不想更改T列中的任何内容
After (突出显示只是为了显示更改,实际上并不需要)
我对此很陌生,实际上是属于别人创造的东西。
感谢您的帮助!
答案 0 :(得分:1)
由于您需要更改S列中的值,因此需要一个宏。 像这样吗?
Option Explicit
Sub Example()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range, cell As Range
Dim str As String
Dim LastRow As Long
Set wb = ThisWorkbook
Set ws = wb.Sheets("Blad1")
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set rng = ws.Range(ws.Cells(1, 1), ws.Cells(LastRow, 1))
For Each cell In rng
If Asc(Left(cell.Value, 1)) >= 65 And Asc(Left(cell.Value, 1)) < 76 Then
str = "Grover"
ElseIf Asc(Left(cell.Value, 1)) >= 76 And Asc(Left(cell.Value, 1)) < 91 Then
str = "Elmo"
End If
If ws.Cells(cell.Row, 19).Value = "Bert" Then
ws.Cells(cell.Row, 19).Value = str
End If
If ws.Cells(cell.Row, 19).Value = "Grover" Then
ws.Cells(cell.Row, 20).Value = "Example1"
ElseIf ws.Cells(cell.Row, 19).Value = "Elmo" Then
ws.Cells(cell.Row, 20).Value = "Example2"
End If
Next cell
End Sub
答案 1 :(得分:0)
不要为此使用VBA,您可以使用公式轻松完成此操作,就像这样:
=IF(LEFT(A1;1)="a";"Yes";"No")
此公式验证单元格A1
是否以一个小写字母"a"
开头(1
工作表函数中的数字LEFT()
表示要采用的字符数)。如果是,则放入"Yes"
,否则放入"No"
。
将这样的公式拖到整个列S
上可能会解决您的问题。