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

问题描述 投票:0回答:1

我刚刚开始使用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

excel vba digits
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.