Excel切换语句公式,将“ M”或“ K”转换为1000000000或1000000

时间:2019-01-29 00:22:13

标签: excel switch-statement formula

我有一个估计足球运动员价值的数据集。当我下载该套件时,所有的净资产如下所示:

85.5M
30.3K
20M

我想创建一个switch语句,该语句将自动遍历数据以适当地转换M和K,例如:

85,500,000,000
30,300,000
20,000,000,000

问题似乎出在公式的一部分(LEFT(H3, -3)上,因为那是我得到红色括号的地方。我曾尝试将LEFT切换为RIGHT,但似乎没有什么作用。

=SWITCH(LEFT(H3, -3), "M", 1000000000, "K", 1000000)

结果看起来像#VALUE,我已经研究过了,得出的结论是语法错误...

enter image description here

3 个答案:

答案 0 :(得分:1)

也许这就是您想要的:

 =IFERROR(LEFT(A1,LEN(A1)-1)*SWITCH(RIGHT(A1,1),"M",10^6,"K",10^3),A1)

答案 1 :(得分:0)

所有3种解决方案均产生照片所示的相同结果。该宏允许您覆盖单元格中的值,因此您不需要帮助列

enter image description here


如果您打开帮助器列。...

java -cp "postgresql-42.2.5.jar;h2o.jar" water.H2OApp

如果您对宏开放。...

=IF(RIGHT(A2,1)="M",SUBSTITUTE(A2,"M","")*10^6,SUBSTITUTE(A2,"K","")*10^3)

如果您对UDF开放......

Option Explicit

Sub Convert()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- UPDATE

Dim LR As Long, Val As Range
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

'Change .Offset(, 4) to .Offset(,) to replace the existing value
For Each Val In Range("A2:A" & LR)
    Select Case Right(Val, 1)
        Case "M"
            Val.Offset(, 4) = Left(Val, Len(Val) - 1) * (10 ^ 6)
        Case "K"
            Val.Offset(, 4) = Left(Val, Len(Val) - 1) * (10 ^ 3)
    End Select
Next Val

End Sub

答案 2 :(得分:0)

最简单的方法是使用right()。 Right返回最后一个字符(或多个字符)或一个字符串。使用它,有一些解决方案。

您可以

Iferror(Value(A1),Value(Left(A1,Len(A1)-1))*If(right(A1)="M",10^6,10^3))

我们首先要说的是如果A1的值有错误,请对该函数进行评估。这是因为如果值A1仅是一个数字,它将忽略我们计划对其执行的所有无意义的字符串。

假设它不是数字,则末尾必须有一个K或M。我们想删除它以获得号码。因此,我们将最左边的字符带到K或M处,仅查看它们。我们通过询问A1的长度是什么,然后从左边减少1个字符来实现。这将始终保留最后一个字符,在我们的示例中,该字符始终为K或M。重要的是,在执行此操作之前,我们已过滤掉了数字,否则它将删除最终数字,并且结果将减少10倍

现在,我们评估该字符串以获取数字。现在,我们需要将其乘以我们得出的K或M。幸运的是,这就像放入*和if语句一样简单,因为我们只有2个选项。它是M,然后乘以10 ^ 6,或者是k,然后乘以10 ^ 3。

但是因为它很出色,所以还有很多废话可以提:

Iferror(Value(A1),(Left(A1,Len(A1)-1)+0)*If(right(A1)="M",10^6,10^3))

从技术上讲较短,尽管意义不大,仍然可以使用。