删除第一个字符,如果它是“0”(零)

时间:2016-03-09 21:01:11

标签: excel excel-formula

我无法获得正确的公式,以便删除列中的前导零。我构建了以下内容,但它返回FALSE而不是没有零的值:

=IF(RIGHT(Z2:Z19497,LEN(Z2:Z19497)-1)="0",MID(Z2:Z19497,2,LEN(Z2:Z19497)))

希望你能提供帮助。

2 个答案:

答案 0 :(得分:4)

假设您的数据在Z2到Z19497中,您需要在单元格AA2中输入以下公式,然后从AA2到AA19497进行选择并填写>向下(或按 Ctrl + D ):

=IF(LEFT(Z2,1)="0",MID(Z2,2,LEN(Z2)-1),Z2)

注意:正如评论中所讨论的那样,-1之后的LEN不是必需的,因为MID即使您指定的长度大于剩下的人物。为了进一步减少输入,您可以使用999(或安全超过最长单元格的数字)而不是LEN(Z2)-1

您尝试的公式存在一些问题:

  1. 此类公式一次仅适用于一个单元格,但您包含整个范围(Z2:Z19497)而不是一个单元格(Z2)。
  2. 您的IF语句具有“if true”部分(MID(Z2:Z19497,2,LEN(Z2:Z19497))),但不包含“if false”部分。这就是为什么你最终得到FALSE而不是Z2中的值。
  3. 测试条件使用LEFTRIGHT更容易。
  4. 请注意,当您复制公式时,Z2会自动前进到Z3Z4等。

答案 1 :(得分:0)

您的公式存在一些问题。

首先,您尝试将公式应用于一系列单元格Z2:Z19497。相反,您需要单独评估每个单元格,检查Z2是否以零开头,Z3以零开头,依此类推。如果您将公式添加到单元格AA2之类的某个位置,然后将其填充到AA19497,那么您将在列AA中列出一些没有前导零的值。

下一个问题出在您的IF测试声明中。如果我们更正您的公式以查看一个单元格,它看起来像这样:RIGHT(Z2,LEN(Z2)-1)="0"。这个公式说,告诉我除了单元格Z2中的第一个字符之外的所有字符都等于0.看看有什么问题吗?它将返回true的唯一时间是当单元格Z2中的两位数字以0结尾时。否则,您将测试多字符值是否等于0,而不是。

相反,让我们检查第一个字符是否等于0.为此,让我们使用LEFT函数来获取第一个字符。 LEFT(Z2,1)="0"太棒了,现在我们知道第一个字符是否为0。

所以让我们假设第一个字符为0.我们想删除它,但我们将如何做到这一点?您当前逻辑的单个单元格修订版本为MID(Z2,2,LEN(Z2)),这应该可以正常工作,但稍微不正确。为了完整起见,我们来解决它。由于您要移除单元格Z2的第一个字符,因此您不再希望MID使用Z2的长度,因此您希望它使用Z2减去1的长度。让我们将公式的这一部分重写为MID(Z2,2,LEN(Z2)-1)然后。

现在谈到Z2中的单元格不以0开头的情况。如果是这种情况,则希望公式简单地返回该值。我们可以通过简单地在公式的指令后添加一个逗号,以便在数字以0开头并插入Z2时再添加一个逗号。这听起来有点令人困惑,但在下面的完整公式中应该有意义:

=IF(LEFT(A1,1)="0",MID(A1,2,LEN(A1)-1),A1)

在单元格(大概是AA2)中输入后,您应该可以点击该单元格右下角的小方框,让它填充列中的公式到数据的末尾,大概是AA19497

如果Z列中的所有值都是以零开头的数字,则您拥有的另一个选项是在另一个单元格=Z2*1中输入公式=Z2/1AA2如果我们遵循与此响应的其余部分相同的模式。这将为您提供新列中Z的数值,并且更容易记住和输入。不幸的是,如果Z列中的值与数字混合在一起,则无效。