我搜索了SO,并且未能成功找到解决方案 - 如何通过Excel vba识别科学记数法列中的单元格?
以下是我试图通过自动过滤行与科学记数法隔离的代码......
Private Sub cmdMoveScientificNotation_Click()
Dim objExcel As Excel.Application
Dim objWB As Excel.Workbook
Dim objWBtoAdd As Excel.Workbook
Dim newWS As Excel.Worksheet
Dim objWS As Excel.Worksheet
Dim i As Long
Dim Lrow As Long
Dim strSearch As String
Dim myRange As Range
Dim Cell As Range
Set objExcel = New Excel.Application
objExcel.Visible = True
Set objWB = Workbooks.Open("C:\TEST\Drop\Bank.xlsx", , False)
Set objWBtoAdd = Workbooks.Add
Set newWS = objWBtoAdd.ActiveSheet
Set objWS = objWB.ActiveSheet
With objWS
Lrow = .Range("A" & .Rows.Count).End(xlUp).Row
myRange = .Range("A1:V" & Lrow)
For Each Cell In myRange
If (Cell.NumberFormat = "0.00E+00") Then
.AutoFilter Field:=2, Criteria1:=strSearch
.SpecialCells(xlTypeVisible).EntireRow.Copy
End If
Next Cell
End With
newWS.PasteSpecial
End Sub
答案 0 :(得分:6)
类似的东西:
If IsNumeric(cell.Value) And cell.text like "*E*" Then
如果数字太长而无法适应单元格的宽度,Excel有时会在不更改数字格式的情况下切换到科学记数法。
如果您只需要查找格式化为科学的单元格,请查看:
cell.NumberFormat
答案 1 :(得分:0)
我怀疑您可能在问题错误中使用了vba标记。如果你只想一眼就知道哪些细胞是科学记数法,你可以......
寻找具有" E"在中间,如123E+00
(见下文)。
通过按 Ctrl + 1 打开数字格式拨号,突出显示一个单元格并检查其格式, g,您可以在哪里查看是否选择了Scientific
。
在下面的示例中,有一些格式为 Number
的单元格,以及 Scientific
即可。我突出显示格式为科学记数法的单元格,以便您可以看到差异。
答案 2 :(得分:-2)
如果范围已格式化为科学记数法,这将适用于一个单元格并返回一个msgbox。
Sub BillNye
Dim MyRange As Range
Set MyRange = Range("A1")
If (MyRange.NumberFormat = "0.00E+00") Then
MsgBox "Scientific"
End If
End Sub
这将扫描范围A1:A10用于科学格式,如果是科学的,则在columb B的单元格中发表评论。您需要修改范围并根据需要偏移等式。如代码所示,您可以过滤B列"科学"只能看到科学格式的值。
Sub BillNye()
Dim MyRange As Range
Set MyRange = Range("A1:A10")
Dim Cell As Range
For Each Cell In MyRange
If (Cell.NumberFormat = "0.00E+00") Then
Cell.Offset(, 1) = "Scientific"
End If
Next Cell
End Sub
我建议将最后一行的范围修改为动态(除非你只需要使用一次,然后静态范围就可以了。)