Как удалить все символы после первого пробела в ячейке? - PullRequest
3 голосов
/ 29 апреля 2011

У меня есть список названий городов с указанием штата, в котором они расположены, в одном столбце в Excel.Как я могу удалить все после первого пробела, чтобы название города было единственным, что осталось в ячейке?

пример: A1 = "johnson TX"
должно быть просто A1 = "johnson"

Ответы [ 4 ]

12 голосов
/ 29 апреля 2011

Я предполагаю, что вы хотите решение 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 работает отлично , хотя этот вариант болеелаконичен и не содержит символ завершающего пробела:

=LEFT(A1, FIND(" ",A1)-1)
6 голосов
/ 29 апреля 2011

Что-то вроде этого

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

в другом столбце должно захватить весь текст до"".Таким образом, вы можете создать еще один столбец, содержащий только названия городов, а затем использовать его в своих целях.

0 голосов
/ 18 декабря 2017

Использование функции Split

Элегантный подход заключается в использовании первого токена функции Split:

Пример кода, извлекаемый изячейки от А1 до А2

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).

Если вы ищете вторую часть, я рекомендую добавить дополнительное значение разделителя ("") к исходной строке, например, s: MsgBox split(s & " "," ")(1).Таким образом вы избежите ошибки с номером 9 "Subscript out of range", если между ними вообще нет разделителя, то есть вообще нет второй части.

0 голосов
/ 23 октября 2015

Если вы ищете функцию 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!"

...