我依稀记得,在设置某些条件后,可以解析单元格中的数据并仅保留部分数据。但我不记得使用什么确切的命令。任何帮助/建议?
例如,A1包含以下信息
0/1:47,45:92:99:1319,0,1320
有没有办法提取,比如0/1
或1319,0,1320
并删除其余未选择的数据?
我知道我可以text-to-column
并设置delimiter
,然后手动删除“不需要的”数据,但我的EXCEL电子表格包含100列X 500000行,每个单元格与上面的数据类似,所以我担心EXCEL可能会在完成工作之前崩溃。 (一直在尝试使用LEFT
,LEN
,RIGHT
,MID
,但似乎没有一种方法可以按照我希望的方式运行
任何建议将不胜感激。
答案 0 :(得分:0)
我认为你要找的是find和mid的组合,但你必须弄清楚你想要如何拆分你的字符串:
A1 = 0/1:47,45:92:99:1319,0,1320 //your number
B1 = Find(“:“,A1) //location of first ":" symbol
C1 = LEN(A1) - B1 //character count to copy ( possibly requires +1 or -1 after B1.
=Left(A1,B1) //left of your symbol
=Mid(A1,B1+1,C1) //right size from your symbol (you can also replace C1 with better defined number to extract only 1 portion
//You can also nest the statements to save space, but usually at cost of processing quantity increase
这是一个概念,您可能需要在多个单元格中执行此操作以分割字符串。对于多个拆分,您可能希望复制此命令以定位先前右/中间命令的结果。 这样,您将获得如下的单元格结果序列: 0/1:47,45:92:99:1319,0,1320; 47,45:92:99:1319,0,1320; 92:99:1319,0,1320; 99:1319,0,1320 ...... 从每个中,您可以检索字符串的左侧到“:”以获取字符串的每个部分。
如果您正在使用大型表,则可能需要查看VB脚本。据我所知,没有一个excel命令可以占用1个单元并将其拆分为多个单元。
答案 1 :(得分:0)
鉴于您有100x列的声明,我想在某些情况下您需要在字符串中间隔离字符,因此Left
和Right
可能并不总是有效。但是,尽可能在可能的地方使用它们。
假设您的字符串位于单元格F2中:0/1:47,45:92:99:1319,0,1320
=LEFT(F2,3)
返回0/1
,它是从左边开始计算的字符串中的前3个字符。同样,Right
的功能类似:
=RIGHT(F2,4)
返回1320
,从右边开始返回4个字符。
您可以使用Mid
和Find
的组合,根据已定义的字符动态查找字符或字符串。以下是在字符串中动态显示值的方法的几个示例。请记住,这些示例的关键是嵌套的Find
公式,其中最内层Find
是字符串中的第一个字符。
1)在第二个:
字符
在单元格F2中,我需要隔离“92”:
=MID(F2,FIND(":",F2,FIND(":",F2)+1)+1,2)
最里面的Find
找到字符串中的第一个:
(4个字符)。我们添加+1
以移至第5个字符(超出第一个:
,以便第二个查找将无法看到它)并移至下一个开始查找:
的查找那个角色。第二个Find返回10,因为第二个:
是字符串中的第10个字符。 Mid
公式接管此处。公式是说,从第10个字符开始返回以下2个字符。返回两个字符由公式末尾的2(Mid
公式的最后一部分)决定。
2)在这种情况下,我需要在字符串中的第3个:
之后找到2个字符。在这种情况下“99”:
=MID(F2,FIND(":",F2,FIND(":",F2,FIND(":",F2)+1)+1)+1,2)
您可以看到我们只是在示例1的公式中添加了一个嵌套的Find
。
答案 2 :(得分:0)
让我试着帮助你,我不是专业人士所以你可能会面临一些问题。首先,我的解决方案包含2列要添加到源列,如下所示。但是,您可以使用此原则改进公式。
Column B Formula:
=LEFT(A2,FIND(":",A2,1)-1)
Column C Formula:
=RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,":","|",LEN(A2)-LEN(SUBSTITUTE(A2,":","")))))