如何删除单元格中第一个空格后的所有字符?

问题描述 投票:3回答:4

我有一个城市名称列表,后面跟着它们在Excel中的一列中所处的状态。如何删除第一个空格后的所有内容,以便城市名称是单元格中唯一剩下的内容?

例如:A1 =“johnson TX” 应该只是A1 =“johnson”

excel vba excel-vba excel-2007
4个回答
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!"


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)获取原始字符串的第一部分(或标记)。

如果您正在寻找第二部分,我建议在原始字符串中添加一个额外的分隔符值(“”),例如: sMsgBox split(s & " "," ")(1)。通过这种方式,如果根本没有分隔符,则可以避免错误编号9 "Subscript out of range",因此根本没有第二部分。

© www.soinside.com 2019 - 2024. All rights reserved.