我在Excel工作表中有很多单元格,使用9个0-9和AZ字符,其中包含一些前缀零:
000000123 000001DA2 0000009Q5 0000L210A 0000014A0 0000A5500 00K002200
我想删除前导零,以便值变为:
123 1DA2 5Q9 L210A 14A0 A5500 K002200
我将如何在Excel公式中执行此操作?我宁愿避免使用VBA宏。
我在Excel工作表中有很多单元格,使用9个0-9和AZ字符,其中包含一些前缀零:
000000123 000001DA2 0000009Q5 0000L210A 0000014A0 0000A5500 00K002200
我想删除前导零,以便值变为:
123 1DA2 5Q9 L210A 14A0 A5500 K002200
我将如何在Excel公式中执行此操作?我宁愿避免使用VBA宏。
Answers:
这是一个占用大量细胞但正确的解决方案。
将您的数据放在A列中。
在B1中,输入公式:
=IF(
LEFT(A1) = "0" ,
RIGHT(A1, LEN(A1)-1),
A1)
这将检查单个前导零并将其删除。
将此公式复制到尽可能多的列中,以使数据中可以包含字符(在这种情况下为9,因此将转到J列)。向下复制每一行数据。
最后一列包含您的数据,除去前导零。
以下公式既不需要其他单元格,也不必作为数组公式输入:
=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)
如果对于类似0
或的字符串应返回一个零00
,则可以使用以下公式:
=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))
对于工作表功能,这是一个棘手的问题。下面的方法可以解决问题,但前提是没有出现的零一次只能出现一个,并且没有尾随零,也没有嵌入空格。
它用空格替换所有零,修剪它们(除嵌入的单个空格以外的所有空格),然后替换回零。
=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")
=CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))
(希望CLEAN
将删除Tabs;否则,请使用)中的其他值CHAR
)
此解决方案适用于所有正好为9个字符的输入值。
首先建立一个固定的十行表,其中包含以下数字格式为文本。
000000000
000000001
000000010
000000100
000001000
000010000
000100000
001000000
010000000
1亿
假设表格位于A1到A10单元格中
假设您的输入值在单元格B1中,结果单元格在C1中
在单元格C1中使用以下公式
=右(B1,MATCH(B1,$ A $ 1:$ A $ 10,1)-1)
MATCH
函数中的第三个参数:1 =查找小于或等于lookup_value的最大值
对于A1中的数据,请使用以下公式:
= RIGHT(A1,LEN(A1)-MAX((FINDB(REPT(“ 0”,ROW(A $ 1:A $ 100)),A1&“-”&REPT(“ 0”,100))= 1)* ROW(A $ 1:A $ 100)))
通过Ctrl + Shift + Enter输入。它适用于最多100个字符的字符串。