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

时间:2019-03-01 13:36:24

标签: excel vba digits

我刚开始使用VBA进行工作,几乎没有任何经验,因此非常感谢您的帮助/建议!

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

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

数字前的金额始终保持不变,但是所需的数字很少只有4位数字。

我尝试通过以下方式删除前几个数字:

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

但是,当我使用该数字时,我认为这个数字实际上会变大,这是因为我可能必须以某种方式删除它的指数表示法。

This is the sheet i need to Filter

在屏幕截图中,您可以看到较大的数字是我用公式编辑的数字。

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

这是我到目前为止用于排列数据以使用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

1 个答案:

答案 0 :(得分:1)

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