【问题标题】:Excel - Text Or Number FormulaExcel - 文本或数字公式
【发布时间】:2018-09-21 13:32:30
【问题描述】:

我想知道以下是否有快捷方式。

我有一个客户将填写的产品表格,我需要公式来格式化他们正确输入的零件编号。如果不是,他们的条目与产品列表不匹配。

以下是各种文本/数字/其他变体... Excel Columns/ Rows Example

    101
7-2009
7-5601-RT
G-2121
5728B
PI-PIXES

除了最后一个以外,我都使用了这个公式: 公式1

=AND(SUMPRODUCT(--ISNUMBER(--MID(B40,ROW($1:$9996),1)))<LEN(B40),MIN(FIND({0,1,2,3,4,5,6,7,8,9},B40&"0123456789"))<=LEN(B40))

我还必须将其保存为 .xls 格式。 基本上,我有一列检查上面的内容,它返回 TRUE/FALSE。

我有另一个检查文本的公式: 公式2:

=IF(I40=FALSE,"NUMBER", "TEXT")

最后一列 TESTS FOR TEXT/NUMBER。 公式3:

=IF(J40 = "NUMBER", VALUE(B40), B40)

PI-PIXES 由于破折号(连字符)而被标记为数字。

没有任何其他选择,我正在考虑添加第三列来查找带有连字符的 TEXT。然后我会更改 FORMULA3 检查是否列 1 = TRUE+列 2 = TRUE 和列 3 = TEXT 但这变得越来越复杂,我想知道是否有捷径。

【问题讨论】:

  • 7-2009 是文本还是数字?
  • 预期格式是什么,有哪些不正确格式的示例?如果 UDF 太复杂,您可能需要它。
  • 101 需要是一个数字,其余的应该是文本。
  • 7-2009 应该是文本
  • 我最终添加了另一列来检查其他 (-),然后添加第四列来设置它是文本还是数字。它现在可以正确地将所有这些示例分类为文本或数字,但 PI-PIXES 与部件号不匹配。令人沮丧!

标签: excel excel-formula


【解决方案1】:

我认为这样做:

=IF(SUBSTITUTE(B40,"-","")<>TEXT(B40,"@"),B40,IFERROR(VALUE(B40),B40))

如果有连字符,则返回 B40 不变,删除日期。否则,它将使用 IFERROR 将其作为普通值转换处理。

这应该适用于旧版本的 Excel:

=IF(SUBSTITUTE(B40,"-","")<>TEXT(B40,"@"),B40,IF(ISERR(VALUE(B40)),B40,VALUE(B40)))

甚至这个:

=IF(ISERR(FIND("-",B40)),IF(ISERR(VALUE(B40)),B40,VALUE(B40)),B40)

【讨论】:

  • 实际上,SUBSTITUTE 函数似乎不适用于 .XLS 版本的 Excel。所以,这可能不适合你。谦虚的道歉。
  • 感谢您试用 Stone;您的示例似乎用“”空格替换连字符,这是它在做什么吗?
  • 这推动了事情的发展;我想知道是否有替代品...我认为这就是兼容性失败的原因。它确实简化了事情。
  • 这推动了事情的发展;我想知道是否有替代品...我认为这就是兼容性失败的原因。它当然可以简化事情。此外,它仍然无法通过 PI-PIXES 部件号并且不匹配。可能还有其他事情发生......
  • 最终为 PI-PIXES 工作;我有一个命名数据集,我没有扩展它以包含我添加的新产品。所以,它不可用...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2021-07-30
  • 2011-02-06
相关资源
最近更新 更多