将大数减少到必要的几位数
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 的值转换为文本字符串,忽略任何奇怪的格式.
我刚开始使用 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 的值转换为文本字符串,忽略任何奇怪的格式.