在Excel中提取具有多种数字格式的列

时间:2017-05-02 06:15:48

标签: excel numbers format copy-paste

我在网上有一个可以下载的报告。在同一列上,我发现了数字的多种格式化风格。即:

1.000 EA(#,## 0.000" EA")

1.000 AU(#,## 0.000" AU")

1.000 PAK(#,## 0.000" PAK")

我需要从此列中提取EA,PAK和AU但我无法复制,因为存储的值实际上是" 1"在所有情况下。有什么方法可以提取或创建一个具有不同格式数字的列作为值?c

1 个答案:

答案 0 :(得分:0)

将此代码放在VB编辑器的模块中( Alt F11

Function myFormat(r As Range) As String
    myFormat = r.NumberFormat
End Function

如果您在单元格中使用公式=myFormat(A1),它将为您提供单元格A1的格式为字符串。

现在在所需的单元格中放置此公式

=TRIM(SUBSTITUTE(RIGHT(myFormat(A1), LEN(myFormat(A1)) - FIND("""",myFormat(A1),1)),"""",""))

这应该会给你想要的结果

<强>更新

以下是所有vba解决方案。您需要根据您的要求更改myRangeoutputRange

Sub runThis()
    Dim myRange As Range
    Set myRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A3") 'Change this as per your requirement

    Dim outputRange As Range
    Set outputRange = ThisWorkbook.Sheets("Sheet1").Range("F1") 'Change this as per your requirement

    Dim s As String

    For i = 1 To myRange.Rows.Count
        s = myRange(i, 1).NumberFormat
        s = Right(s, Len(s) - WorksheetFunction.Find("""", s, 1))
        s = Trim(WorksheetFunction.Substitute(s, """", ""))
        outputRange.Offset(i - 1, 0) = s
    Next i
End Sub