将大数减少到必要的几位数

Reduce a Large Number to the necessary few digits

我刚开始使用 VBA 工作,几乎没有任何经验,所以非常感谢任何 help/suggestions!

我正在处理一份自动报告,我需要使用设备编号来查找属于它的数据。例如 90902018436270200 是 fullNumber 所需的数字是 18436.

在我复制并将它们从默认值更改为数字之前,数字也显示为 9.0902E+16。

号码前的金额始终保持不变,但要求的号码很少只有 4 位长。

我尝试删除第一位数字:

If Left(Range("A5"), 1) = "9" Then
    Range("A5").Value = WorksheetFunction.Replace(Range("A5").Value, 1, 4, "")

然而,当使用它时,数字实际上变大了,我认为这是因为我可能不得不以某种方式删除的指数符号。

在截图中你可以看到大数字是我用公式编辑的。

数字在左侧,表示要使用的设备名称 =vlookup 我需要过滤掉不必要的数字,否则它无法识别从哪一行获取数据。在另一个 sheet 我有一个单元格,用户可以键入设备的编号,然后它应该找到与该设备的编号匹配的数据。但是,公式 =Vlookup 无法识别 raw/big 数字中所需的数字。

这是我目前用来安排数据与 excel 公式一起使用的代码。

Sub CorrectNames()

'replaces complicated names to easier ones

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "10"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "20"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "50"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "100"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "1000"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "200"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "2000"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "500"
    ActiveCell.Offset(0, 1).Range("A1").Select

    'moves device digits to the left side and changes format

    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    ActiveCell.Offset(0, -9).Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.NumberFormat = "0."


End Sub

Sub ExposeDevicedigits()

If Left(Range("A5"), 1) = "9" Then
    Range("A5").Value = WorksheetFunction.Replace(Range("A5").Value, 1, 4, "")



End If

End Sub

The Data sheet where the filtered Results would go

如果 90902018436270200 在 A5 中,则 =MID(text(A5,0),7,5) 将 return“18436”(TEXT 将 A5 的值转换为文本字符串,忽略任何奇怪的格式.