Excel VBA-如何使用科学记数法识别细胞

时间:2018-06-05 00:42:11

标签: excel vba notation

我搜索了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

3 个答案:

答案 0 :(得分:6)

类似的东西:

If IsNumeric(cell.Value) And cell.text like "*E*" Then

如果数字太长而无法适应单元格的宽度,Excel有时会在不更改数字格式的情况下切换到科学记数法。

如果您只需要查找格式化为科学的单元格,请查看:

cell.NumberFormat

答案 1 :(得分:0)

我怀疑您可能在问题错误中使用了标记。如果你只想一眼就知道哪些细胞是科学记数法,你可以......

  1. 寻找具有" E"在中间,如123E+00(见下文)。

  2. 通过按 Ctrl + 1 打开数字格式拨号,突出显示一个单元格并检查其格式, g,您可以在哪里查看是否选择了Scientific

  3. 实施例

    在下面的示例中,有一些格式为 Number 的单元格,以及 Scientific 即可。我突出显示格式为科学记数法的单元格,以便您可以看到差异。

    img

    更多信息:

    img

答案 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

我建议将最后一行的范围修改为动态(除非你只需要使用一次,然后静态范围就可以了。)