2011-04-29 110 views
3

我有一個城市名稱的列表,後面跟着它們所在的狀態,它們都位於Excel的一列中。如何刪除第一個空格後的所有內容,以便城市名稱是單元格中剩下的唯一內容?如何刪除單元格中第一個空格後的所有字符?

例如:A1 = 「約翰遜TX」
應該只是A1 = 「約翰遜」

回答

11

我假設你想要一個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) 
6

好做這樣的事情

=Mid(A1, 1, Find(" ",A1)) 

另一列應該抓住所有文字之前的「 」。因此,您可以用所有城市名稱構建另一列,然後您可以將該列用於您的目的。

0

如果您正在尋找VBA功能,您可以使用LeftInStr,如下所示。

Dim Temp As String: Temp = "Hello_World! This is my first answer here. :D" 
Temp = Left(Temp, InStr(Temp, " ")-1) 

在這種情況下,Temp"Hello_World!"使用Split功能

0

優雅的方法是使用所述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) 

所得分裂一維數組是基於零,所以你得到原始字符串的第一部分(或標記)通過索引(0)

如果您正在尋找第二部分,我建議在原始字符串中添加一個額外的分隔符值(「」),例如, sMsgBox split(s & " "," ")(1)。通過這種方式,如果根本沒有分隔符,那麼就避免了錯誤號9 "Subscript out of range",因此根本沒有第二部分。

相關問題