我有一个估计足球运动员价值的数据集。当我下载该套件时,所有的净资产如下所示:
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
,我已经研究过了,得出的结论是语法错误...
答案 0 :(得分:1)
也许这就是您想要的:
=IFERROR(LEFT(A1,LEN(A1)-1)*SWITCH(RIGHT(A1,1),"M",10^6,"K",10^3),A1)
答案 1 :(得分:0)
所有3种解决方案均产生照片所示的相同结果。该宏允许您覆盖单元格中的值,因此您不需要帮助列
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)
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))
从技术上讲较短,尽管意义不大,仍然可以使用。