我再次大家。我试图拉各种字符串并将字符串放在一个单独的字段中。我似乎无法让我的代码工作,我希望有人可以在我有缺陷的尝试中发光。非常感谢你。
我的列“B”包含多个名称,格式如下:
B C D
Other Team teamOne teamTwo
/jdoe/smithjr/
/someguy/testuser/
/obiwan/luke/darth
/vader/
/hp/dell/lenova/mint/
我只需要取前两个名字,在一个字段中放置一个名字,在另一个字段中放一个名字。
预期结果
B C D
Other Team teamOne teamTwo
/jdoe/smithjr/ jdoe smithjr
/someguy/testuser/ someguy testuser
/obiwan/luke/darth obiwan luke
/vader/ vader
/hp/dell/lenova/mint/ hp dell
到目前为止,我提出的代码在下面并且不起作用。我收到的错误是没有要替换的数据。
For Q = 2 To 10
If UCase(Cells(Q, "B").Value) Like "*Other Team*" Then
Name = Cells(Q, "B").Value
startingPosition = InStr(Name, "/")
Firstname = Left(Name, (startingPosition) - 1)
secondName = Right(Name, startingPosition - 2)
Cells(Q, "C").Value = Firstname
Cells(Q, "D").Value = secondName
End If
Next Q
我对VBA很新(第3天)并且似乎无法弄清楚如何解析这些数据。也许有人可以解释我做错了什么并帮助我?谢谢。
答案 0 :(得分:1)
由于您有一个分隔字符串,我个人使用Split
函数。另请注意,您的If UCase(Cells(Q, "B").Value) Like "*Other Team*" Then
测试在示例数据中的每个输入上都失败了 - 只有您跳过的列标题才会出现,假设您将测试更改为大写,就像您执行输入。如果您正在尝试确定自己是否使用了正确的工作表,则需要将其置于循环之外。
这样的事情:
If UCase$(Cells(1, "B").Value) Like "*OTHER TEAM*" Then
Dim tokens() As String
For Q = 2 To 10
Name = Cells(Q, "B").Value
tokens = Split(Name, "/")
If UBound(tokens) > 0 Then Cells(Q, "C").Value = tokens(1)
If UBound(tokens) > 1 Then Cells(Q, "D").Value = tokens(2)
Next Q
End If
答案 1 :(得分:0)
只需输入一个"公式"方法
Sub main()
If UCase$(Cells(1, "B").Value) Like "*OTHER TEAM*" Then
Range("c2:c10").FormulaR1C1 = "=MID(RC2,2,SEARCH(""/"",RC2,2)-2)"
Range("d2:d10").FormulaR1C1 = "=IF(ISNUMBER(SEARCH(""/"",RC2,SEARCH(""/"",RC2,2)+1)),MID(RC2,SEARCH(""/"",RC2,2)+1,SEARCH(""/"",RC2,SEARCH(""/"",RC2,2)+1)-SEARCH(""/"",RC2,2)-1),"""")"
End If
更多" clear"格式可以是
Dim str1 As String, str2 As String, formula1 As String, formula2 As String
str1 = "SEARCH(""/"",RC2,2)"
str2 = "SEARCH(""/"",RC2," & str1 & "+1)"
formula1 = "=MID(RC2,2," & str1 & "-2)"
formula2 = "=IF(ISNUMBER(" & str2 & "),MID(RC2," & str1 & "+1," & str2 & "-" & str1 & "-1),"""")"
If UCase$(Cells(1, "B").Value) Like "*OTHER TEAM*" Then
Range("c2:c10").FormulaR1C1 = formula1
Range("d2:d10").FormulaR1C1 = formula2
End If