我在网上有一个可以下载的报告。在同一列上,我发现了数字的多种格式化风格。即:
1.000 EA(#,## 0.000" EA")
1.000 AU(#,## 0.000" AU")
1.000 PAK(#,## 0.000" PAK")
我需要从此列中提取EA,PAK和AU但我无法复制,因为存储的值实际上是" 1"在所有情况下。有什么方法可以提取或创建一个具有不同格式数字的列作为值?c
答案 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解决方案。您需要根据您的要求更改myRange
和outputRange
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