如何在excel中获得=LEFT函数,同时将数字零作为第一个数字?

Jef*_*son 20 microsoft-excel-2007 worksheet-function microsoft-excel microsoft-excel-2010

我的数据包含一列房间号。每个房间号的前2位数字是房间所在的楼层号。=LEFT 函数适用于不以零开头的数据。=LEFT 函数不适用于以零开头的数据。

如何让公式在第一个数字为零时不忽略它?

Room Number       Formula         Floor Number
1214              =LEFT (A2, 2)   12
2354              =LEFT (A2, 2)   23 
1876              =LEFT (A2, 2)   18
1567              =LEFT (A2, 2)   15
0403              =LEFT (A2, 2)   40* (should be level 04)
1918              =LEFT (A2, 2)   19
0910              =LEFT (A2, 2)   91* (should be level 09)
Run Code Online (Sandbox Code Playgroud)

tey*_*lyn 35

如果所有房间号都是4位数字,而4位数字是通过自定义格式“0000”格式化小于1000的数字来实现的,那么你可以使用

=LEFT(TEXT(A1,"0000"),2)
Run Code Online (Sandbox Code Playgroud)

编辑:FWIW,如果值为文本,这种方法也适用。

在此处输入图片说明


Mát*_*ász 26

似乎您将房间号存储为数字,这种情况下 LEFT 不是最佳选择,请改用 INT:

=INT(A2/100)

要保留前导零(04而不是4),您需要使用“类型”将单元格的数字格式设置为“自定义”:00

感谢@fixer1234 的评论!

在此处输入图片说明

  • 好答案。- 我认为“房间号码”并不是真正的数字,但更多的房间标识符和类型文本是合适的。我作为 API 开发人员的经验使我遵循这条经验法则:“如果添加或乘以它没有意义,它可能应该保存为文本而不是数字” - 对于组合键更是如此某些“数字”是有意义的。 (9认同)
  • @Falco确实,在未来的某个时候,可能会存在“1214A”的“房间号”,并且将基本上是字符串的内容视为数字会失败。 (3认同)
  • 这也是`QUOTIENT`函数:`=QUOTIENT(A1,100)` (2认同)
  • 在同一类别中:电话号码也不是数字。 (2认同)

Mic*_*ank 6

这听起来像是单元格格式问题。确保您的Room Number列格式为Text而不是GeneralNumber

左公式示例
这是来自 LibreOffice,但只要单元格格式为文本,Excel 的行为就相同。

根据您的评论,您只是自定义格式化值以显示前导 0,您可以使用此公式检查房间名称中是否有前导 0,如果没有,则添加一个:

=IF(LEFT(A1,1)=0,LEFT(A1,2),CONCAT("0",LEFT(A1,1)))

屏幕截图显示了正在运行的前导 0 逻辑公式

  • @Jefferson “当我将其格式化为文本时,房间号 0403 变为 403。” - 那挺好的!在你把它格式化为文本之前,有一个问题(即单元格内容错误),但问题被隐藏了。将其格式化为文本揭示了问题。 (2认同)

fix*_*234 6

迈克尔·弗兰克明白发生了什么。自定义格式“0000”根据需要添加前导零以显示四位数字,但它不会改变单元格中的内容。如果将该格式应用于102,单元格将显示0102,但如果使用 LEN() 测试字符数,则将显示三个。您可以将此用于具有简短公式的解决方案。

在此处输入图片说明

在 A1 中,我得到了 value 102。在 A2 中是相同的值,自定义格式的0000. B2中的公式为:

=LEFT(REPT("0",4-LEN(A2))&A2,2)
Run Code Online (Sandbox Code Playgroud)

这从 4 中减去 A2 中值的实际长度,然后创建前导零的结果计数并将其连接到 A2 中的实际值。然后取结果的左边两个字符。

第 3 行显示了当 A 列中的值实际上是四个字符时的结果。