在 Excel 中查找与分隔符并发的位置

Find position with the concurrence of a separator in Excel

早上好,我在 Excel 2016 年一直在寻找一个公式来帮助我解决这个问题,但我没有成功,我在一个单元格中有这个文本:

CF|0101|2019-02-05|01|F007-00000018|PEN|20539043782|6|20479636304|SERVICENTRO SANTA MARIA EIRL|CARRET. JAEN SAN IGNACIO KM 25- CAS. YANUYACU- JAEN||||||||6.10|33.90|6.10|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|33.90|40.00|0.00|0.00|40.00|1000|CUARENTA CON 00/100 SOLES   |||||||M5K-788|

我想借助分隔符“|”提取文本在一个不太长的公式里用FIND试试,第三次连查后公式就变长了,请问有什么方法可以通过并发数得到分隔符的位置吗? ,像这样:

搜索到的文本;单元格;重复次数(并发符号)

=公式("|";A1;2)

结果:8

或者模拟这样的东西?

从已经非常感谢你。

**更新

我不会使用“|”之间的所有文本,这就是为什么我需要获取分隔符的位置以仅提取我需要的文本,因为工具"Text to Columns "强制你给出一个所有单独文本的位置。

here所述,您可以使用Text to Columns:

Select the cell or column that contains the text you want to split.

Select Data > Text to Columns.

In the Convert Text to Columns Wizard, select Delimited > Next.

Select the Delimiters for your data. You'd want to put a | in the "Other" area.

Select Next.

Select the Column data format or use what Excel chose for you.

Select the Destination, which is where you want the split data to appear on your worksheet.

Select Finish.

或者 - 如果您真的只需要在一个字符串中包含所有内容,而不需要 |,您可以使用 SUBSTITUTE():

=SUBSTITUTE(A1,"|"," ")

如果您真的想要一个将所有内容分隔到唯一列中的公式。那么也许你应该看看自定义公式。这是一个 UDF 的快速示例,它可以根据“|”

解析数据
Function SplitData(rng As String, Character As Variant, Position As Integer) As Variant

    SplitData = Split(rng, Character)(Position - 1)

End Function

将此函数放入 VBA 模块后,您就可以从该工作簿中的任何单元格调用它。

为了简单起见,这里是突破...

=SplitData( <THE CELL THAT CONTAINS THE DATA YOU WISH TO PARSE>, <THE CHARACTER YOU WANT TO USE AS YOUR DELIMITER>, <POSITION IN WHICH YOU WANT TO DISPLAY THE TEXT (Valid Numbers start at 1+> )

POSITION点用于显示文本的哪一部分。例如,根据您提供的示例,如果您填充以下内容...

=SplitData(A1, "|", 1) == "CF"

顺便说一下,如果您对找到“|”的位置一无所知,那么使用=Search() 公式怎么样。这将很容易地找到第一个“|”的字符位置,但通过一些工作,您可以让它显示其他位置。