我想在新栏目中只获得大部分文字,即
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)用于所有选项,但效率非常低。感谢任何帮助。
答案 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 TR
和Kraków SJ TR
不是必需的。对于这些最后两个DLS
和SJ
保留在它们不应该的位置 - 是否值得进一步处理步骤可能取决于其余10,000个条目中的内容 - 但无论如何都可能更好由于遗漏而不是佣金。
从Myślibórz
中剥离Barlinek + Myślibórz
可能会被视为一个问题,但可以审核包含+
的所有条目,并替换为&
+
在Barlinek + Myślibórz
之类的情况下附加一个空格,然后会导致Barlinek & Myślibórz
(除非选择继续执行一个反转替换的步骤)。
因此,对于示例数据,公式可以处理19个案例中的大约两个案例。根据需要推断为10,000行8,947可能至少是一个良好的开端,并且可以在其他列中添加更多“规则”以处理ColumnF中至少接近所需数据的任何其他可观察模式。