在Excel中拆分不同组合的单词

时间:2014-03-26 10:49:20

标签: excel

我想在新栏目中只获得大部分文字,即

Czechowice - Dziedzice AMBRA
比亚韦斯托克 DEF
Komorniki
BielskoBiała EC
Farmacja Luboń
GorzówWlkp。
Grudziądz EC
Kędzierzyn-Koźle EC
OstrowiecŚwiętokrzyski EC
冰球 T
Przeworsk + Sklep
比亚韦斯托克 + sklep
凯尔采(Masłów)
Barlinek +Myślibórz
卢布林 TR
BiałaPodlaska TR
PuławyII TR
Toruń DLS TR
Kraków SJ TR
我尝试使用IF(ISNUMBER(SEARCH(“AMBRA”; B2)); LEFT(B2; LEN(B2)-6)用于所有选项,但效率非常低。感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这需要VBA来创建自定义功能。您可以使用Characters的{​​{1}}属性返回有关单元格中单个字符的信息:

Range

创建一个模块,粘贴此代码,然后您可以使用例如工作表中的Public Function getBoldText(cellReference As Range) As String Dim i As Long 'Loop through each character in the cell For i = 0 To cellReference.Characters.Count 'If the character is bold then... If cellReference.Characters(i, 1).Font.Bold Then '...add it to the output getBoldText = getBoldText & cellReference.Characters(i, 1).Text End If Next i End Function 仅返回单元格中的粗体文本。此函数仅适用于单个单元格,如果单元格包含除文本之外的任何内容,则返回=getBoldText(A1)

注意我会使用#VALUE!作为循环,但尽管出现For Each...Next实际上并不是一个集合,所以你不能迭代它。

答案 1 :(得分:0)

@simoco提出了非常恰当的观点:

  

如果您的值中没有任何模式,您认为Excel应该如何检测字符串的哪一部分?

然而OP提到我有大约10000行,所以尽管Excel可能无法提供完整的解决方案,但它仍然可能有所帮助。可以理解的是,OP似乎已经失去了兴趣(可能仍在手动操作10,000?)但问题并不罕见,并且证明了一种方法,即使只是部分成功的方法,也可能对其他人有用。

所以我将OP的列表放在A1:A19中。从观察开始,大部分没有底鼓的东西在最后一个空格后开始,所以在B1:

 =LEN(A1)-LEN(SUBSTITUTE(A1," ",""))  

通过比较删除空格后字符串的原始长度和长度,我们获得原始字符串中的空格数。

在C1:

 =IF(RIGHT(A1)=".",A1,SUBSTITUTE(A1," ",REPT(" ",LEN(A1)),B1))  

我们从最后一个空格开始,并用与原始字符串长度一样多的空格替换它。 (有理由这样做!)。同时注意到Gorzów Wlkp.以句号结束(待保留)而没有任何要删除的内容,我们对结束.的strigs做了一个特定的例外。

在D1中:

 =IF(ISERROR(C1),A1,LEFT(C1,LEN(A1)))  

在要保留的文本之间插入了大量空格而不是保留,我们现在从左侧选择我们开始使用的字符数 - 所以我们要保留的主要是大部分空白。如果C1中的公式没有空格,则返回错误,因此在这些情况下,我们将取整个原始字符串。

在E1中:

=IFERROR(LEFT(D1,FIND("+",D1)),D1)  

这会尝试处理至少一些包含加号+的数据。除了例外情况之外,数据示例中的Barlinek + Myślibórz与任何后续字符一起被删除。以上删除了以下字符。

在F1中:

=TRIM(SUBSTITUTE(E1,"+",""))   

这主要是整理,因为没有更多可以“自动化”的东西。 +被移除,并且先前插入的空间中有剩余。

因此,尽管原始数据是“非标准化的”,但在19的样本中,只有上述例外且Toruń DLS TRKraków SJ TR不是必需的。对于这些最后两个DLSSJ保留在它们不应该的位置 - 是否值得进一步处理步骤可能取决于其余10,000个条目中的内容 - 但无论如何都可能更好由于遗漏而不是佣金。

Myślibórz中剥离Barlinek + Myślibórz可能会被视为一个问题,但可以审核包含+的所有条目,并替换为& +Barlinek + Myślibórz之类的情况下附加一个空格,然后会导致Barlinek & Myślibórz(除非选择继续执行一个反转替换的步骤)。

因此,对于示例数据,公式可以处理19个案例中的大约两个案例。根据需要推断为10,000行8,947可能至少是一个良好的开端,并且可以在其他列中添加更多“规则”以处理ColumnF中至少接近所需数据的任何其他可观察模式。