我有一个城市名称列表,后面跟着它们在Excel中的一列中所处的状态。如何删除第一个空格后的所有内容,以便城市名称是单元格中唯一剩下的内容?
示例:A1 =“johnson TX”
应该只是A1 =“johnson”
答案 0 :(得分:11)
我认为您需要VBA解决方案,因为您标记了问题excel-vba。
这有效:
Sub KeepCity()
Dim strCityAndState As String
Dim strCityOnly As String
strCityAndState = Range("A1").Value
strCityOnly = Left(strCityAndState, InStr(strCityAndState, " ") - 1)
Range("A2").Value = strCityOnly
End Sub
如果您不想要VBA并且想要一个单元格公式,那么@JToland's answer works fine,虽然这个更简洁并且不保留尾随空格字符:
=LEFT(A1, FIND(" ",A1)-1)
答案 1 :(得分:6)
做这样的事情
=Mid(A1, 1, Find(" ",A1))
另一列中的应该在之前获取所有文本。“因此,您可以使用所有城市名称构建另一个列,然后您可以将该列用于您的目的。
答案 2 :(得分:0)
如果您正在寻找VBA功能,可以使用Left
和InStr
,如下所示。
Dim Temp As String: Temp = "Hello_World! This is my first answer here. :D"
Temp = Left(Temp, InStr(Temp, " ")-1)
在这种情况下,Temp
将为"Hello_World!"
答案 3 :(得分:0)
使用Split
功能
优雅的方法是使用Split
函数的第一个标记:
代码示例从单元格A1提取到A2
Option Explicit
Sub KeepCity()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("MySheet") ' << Change to your sheet name
ws.[A2] = Split(ws.[A1], " ")(0)
End Sub
替代语法
您也可以使用:
代替单元格缩写[A2]
或[A1]
ws.Range("A2").Value = Split(ws.Range("A1").Value, " ")(0)
注意强>
生成的拆分1维数组基于零,因此您可以通过索引(0)
获取原始字符串的第一部分(或标记)。
如果您正在寻找第二部分,我建议在原始字符串中添加一个额外的分隔符值(&#34;&#34;),例如: s
:MsgBox split(s & " "," ")(1)
。通过这种方式,如果根本没有分隔符,则可以避免错误编号9 "Subscript out of range"
,因此根本没有第二部分。