【问题标题】:EXCEL: Formula to get length of number as displayed in cell (incl. displayed leading zeros)?EXCEL:获取单元格中显示的数字长度的公式(包括显示的前导零)?
【发布时间】:2017-08-22 19:03:12
【问题描述】:

我有一个用户提供的字段,它将数字 GTIN 存储为文本。我验证下一个单元格中的字段是 7 或 11 个字符。

添加诸如=OR(LEN(A1)=7,LEN(A1)=11) 之类的公式很容易,但在某些情况下,用户会从另一个 Excel 文档中粘贴,例如自定义格式为 11 0 的数字。该单元格似乎包含 11 个带有几个前导零的字符,但 LEN 公式看到的字符更少(例如,该单元格可能显示 00123456789,但 LEN(A1) = 9)。我不知道如何控制这一点。

如果没有宏,我怎样才能找到这个显示值的长度

感谢您的帮助!

【问题讨论】:

  • 然后你的单元格上有一个自定义格式来显示额外的00,而 Excel 只能看到123456789。由于公式无法“看到”单元格的格式,因此您需要 vba。
  • 真可惜。是的,情况就是这样。基本上,我根据 GTIN 的长度计算最终校验位,自定义格式中的前导零不允许我确定这一点。
  • 将所有内容转换为 11 个字符或 7 个或 11 个字符中的较小者是否存在问题?你可以按照=RIGHT("00000000000"&A1,11) 的方式做一些事情并复制下来。如果 a1 的长度
  • 在获取长度之前先检查单元格是TEXT 还是NUMBER 怎么样?像这样的东西:=IF(ISTEXT(A10),LEN(A10),IF(ISNUMBER(A10),IF(LEN(A10)<=7,7,11),"Check Format"))。我不确定为什么字段可以是 7 或 11,因为我不熟悉 GTIN,所以我假设如果数字小于或等于 7,则长度应为 7,否则为 11。或者您可以使用@987654330 @ 将数字转换为文本。每个 0 代表一个字符。

标签: excel excel-formula


【解决方案1】:

一个快速的用户定义函数(又名 UDF)可以替代标准的 LEN 工作表函数。

function displayLEN(rng as range)
    displayLEN = len(rng(1).text)
end function

将其放入标准模块代码表中。就像工作表的 LEN 函数一样使用;例如=displayLEN(A1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多