我有一列混合了数字和文本,想要使用if
... then
... else
条件将它们分成不同的列。在Power Query中是否有ISNUMBER()
或ISTEXT()
等价函数?
我有一列混合了数字和文本,想要使用if
... then
... else
条件将它们分成不同的列。在Power Query中是否有ISNUMBER()
或ISTEXT()
等价函数?
以下是如何在Excel Powerquery中检查类型的方法
数字类型
=Value.Is(Value.FromText([混合值所在列]), type number)
文本类型
=Value.Is(Value.FromText([混合值所在列]), type text)
希望对您有所帮助!
将其转化为逻辑测试格式
Value.Type([Column1]) = type number
Value.Type([Column1]) = type text
Value.Type
函数返回一个 类型
,因此将其放在方程中会返回一个 true / false。
同样地,
Value.Type([Column1]) = Date.Type
Value.Type([Column1]) = Text.Type
HTH
这要取决于数据的性质和最初编码的方式。Power Query比Excel更加强类型。
例如:
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]})
let
Source = Table.FromRecords({[A=1],[A="1"],[A="a"]}),
#"Added Custom" = Table.AddColumn(Source, "Type", each
let
TypeLookup = (inputType as type) as text =>
Table.FromRecords(
{
[Type=type text, Value="Text"],
[Type=type number, Value="Number"]
}
){[Type=inputType]}[Value]
in
TypeLookup(Value.Type([A]))
),
#"Added Custom 2" = Table.AddColumn(#"Added Custom", "Interpreted Type", each
let
result = try Number.From([A]) otherwise "Text",
resultType = if result = "Text" then "Text" else "Number"
in
resultType
)
in
#"Added Custom 2"
each let result = try Number.From([A]) otherwise "Text", resultType = if result = "Text" then "Text" else "Number" in resultType
- Alejandro Lopez-Lago - MSFTISTEXT()在我所接触的任何语言中都不存在 - 通常任何数字或日期值都可以转换为文本,那么什么情况下会出现错误结果呢?
对于ISNUMBER,我可以通过将数据类型更改为数字类型(例如整数)来解决此问题,而无需编写任何代码。任何无法转换的行都将显示错误 - 然后您可以应用替换错误或删除错误来处理它们。
如果您不想干扰原始列,请先使用复制列。
我同意Mike Honey的观点。 我有一个SKU代码,它是字符和数字的混合。 通常最后8个字符是数字,但在某些奇怪的情况下,SKU会重复一个额外的字母,但给出相同的EAN,这会造成混乱。 通过使用Text.End(SKU,1)创建一个新的临时列,我只获取最后一个字符。然后我将该列转换为整数。任何错误行都将被删除,只留下我需要的行。然后我删除临时列,以原始格式保留所需的行。