【问题标题】:5.5K to a Real Number in ExcelExcel 中的 5.5K 到实数
【发布时间】:2026-01-14 03:30:02
【问题描述】:

我正在尝试以更有效的方式将大量数据点从 .7K、3.2K、2.25M 等转换为实数格式。我知道有一种方法可以创建自定义数字格式,但是当有这么多 IF 语句可以使用时,我该怎么做。我真的不知道从哪里开始,任何帮助将不胜感激。我知道我可以使用过滤器和替换工具来单独处理每个 if 语句,但是由于那里有成千上万的数据点,我想找到一种更有效的方法。

【问题讨论】:

  • 你说了这么多if语句,还有什么其他的组合?只有 K 和 M 吗?

标签: excel excel-formula number-formatting


【解决方案1】:

在查找中添加所有不同的字符组合。

如果在查找中未找到特定字符,则结果将为 N/A。

=VLOOKUP(RIGHT(C2,1),G2:H3,2)*SUBSTITUTE(C2,RIGHT(C2,1),"")

提示:当您拖动/填充公式时,vlookup 的引用也会发生变化,以避免在单元格引用中添加“$”。

=VLOOKUP(RIGHT(C2,1),$G$2:$H$3,2)*SUBSTITUTE(C2,RIGHT(C2,1),"")

【讨论】:

    【解决方案2】:

    如果只是这两个; K 和 M,那么下面会做你想做的事:

    =LEFT(A1,LEN(A1)-1) * IF(ISNUMBER(SEARCH("k",A1)),1000,1000000)
    


    使用 vba 就地完成:

    Sub foooooooo()
        Dim rng As Range
        Dim ws As Worksheet
    
        Set ws = Worksheets("Sheet12") ' Change to your worksheet name
    
        With ws
            'Change the "A" to the column in which you have the numbers and the 1 to the first row of numbers
            Set rng = .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp))
            rng.Value = .Evaluate("=INDEX(LEFT(" & rng.Address & ",LEN(" & rng.Address & ")-1) * IF(ISNUMBER(SEARCH(""k""," & rng.Address & ")),1000,1000000),)")
        End With
    End Sub
    

    【讨论】:

    • 如果它被选中,它会遍历整个列吗?
    • 不,您会将公式放入 B1 并复制/填写。参考将自动更改。 @MayaCat
    最近更新 更多