Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在excel中删除字母数字文本的前导零_Excel_Vba_Excel Formula - Fatal编程技术网

如何在excel中删除字母数字文本的前导零

如何在excel中删除字母数字文本的前导零,excel,vba,excel-formula,Excel,Vba,Excel Formula,Excel中的一个单元格列如下所示: 00071331 000062KV 00008M01 00009R22 001N5350 12345678 00123456 71331 62KV 8M01 9R22 1N5350 12345678 123456 我想删除所有前导零。输出应如下所示: 00071331 000062KV 00008M01 00009R22 001N5350 12345678 00123456 71331 62KV 8M01 9R22 1N

Excel中的一个单元格列如下所示:

00071331 
000062KV 
00008M01 
00009R22 
001N5350
12345678
00123456
71331 
62KV 
8M01 
9R22 
1N5350
12345678
123456
我想删除所有前导零。输出应如下所示:

00071331 
000062KV 
00008M01 
00009R22 
001N5350
12345678
00123456
71331 
62KV 
8M01 
9R22 
1N5350
12345678
123456
我曾尝试在excel中使用Flash fill,但它没有选择模式。

使用MID,聚合:

=MID(A1,AGGREGATE(15,7,ROW($1:$8)/(MID(A1,ROW($1:$8),1)<>"0"),1),8)
=MID(A1,合计(15,7,世界其他地区($1:$8)/(MID(A1,世界其他地区($1:$8),1)“0”),1),8)
因为您标记了VBA,请尝试:


这将执行“就地”转换,而不需要“助手列”。

与@Gary的学生相同,但有一些小的变化:不使用列a,而是使用当前选择;在0000形式的字符串中,并不是所有的零都被删除,而是只删除前导的一个,以此类推

Sub NoZeroAnywhere()
    Dim r As Range, v As String
Rem Work with all selected cells
    If TypeName(Selection) <> "Range" Then Exit Sub
    For Each r In Selection.Cells
        v = r.Text
        If v <> "" Then ' Don't break loop on empty cell
Rem Condition Len(v)>1 prevent remove all zeros, 0000 will be 0, not empty string
            While Len(v) > 1 And Left(v, 1) = "0"
                v = Right(v, Len(v) - 1)
            Wend
            r.Value = v
        End If
    Next r
End Sub
Sub-nozeroawhere()
变暗r为范围,v为字符串
Rem使用所有选定的单元格
如果TypeName(选择)“Range”,则退出Sub
对于选择单元格中的每个r
v=r.文本
如果v为“”,则不要在空单元格上断开循环
Rem条件Len(v)>1防止删除所有零,0000将为0,而不是空字符串
而Len(v)>1和Left(v,1)=“0”
v=右(v,透镜(v)-1)
温德
r、 值=v
如果结束
下一个r
端接头

我认为在您的情况下,您可以使用:

=MID(A1,FIND(LEFT(SUBSTITUTE(A1,"0",""),1),A1),8)
或类似以下的数组公式:

=MID(A1,MATCH(TRUE,MID(A1,ROW($1:$8),1)<>"0",0),8)
=MID(A1,匹配(TRUE,MID(A1,行($1:$8),1)“0”,0),8)
或者,如果不想将其作为数组公式输入:

=MID(A1,MATCH(TRUE,INDEX(MID(A1,ROW($1:$8),1)<>"0",),0),8)
=MID(A1,匹配(TRUE,索引(MID(A1,行($1:$8),1)“0”,0),8)

您也可以使用正则表达式作为自定义项执行:

Function RemoveLeadingZeroes(stringOne As String) As String

Dim regexOne As Object
Set regexOne = New RegExp

regexOne.Pattern = "^0*"

RemoveLeadingZeroes = regexOne.Replace(stringOne, "")

End Function

注意:必须在VBA编辑器中启用工具>引用>Microsoft VBScript正则表达式