【问题标题】:Reduce a Large Number to the necessary few digits将大数减少到必要的几位数
【发布时间】:2019-07-23 13:18:21
【问题描述】:

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

我正在编写一份自动报告,我需要使用设备编号来查找属于它的数据。示例 90902018436270200 是完整的数字,所需的数字是 18436。

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

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

我尝试使用以下方法删除第一个数字:

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

但是,当使用该数字时,我认为实际上是因为指数符号我可能不得不以某种方式删除。

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

左侧的数字表示要使用的设备的名称 =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

【问题讨论】:

  • 请提供最小可行示例
  • 不要将序列号或其他标识号视为数字。将它们视为字符串,并将它们显示在格式化为文本的单元格中。 Mid 可以提取出需要的子串。
  • 你好 RussellB 我不太清楚你指的是什么,因为这是我第一次使用这个网站,但我试图用更多数据编辑我的问题,这可能会有所帮助,谢谢
  • 添加到 John 的评论 - Excel 对数字的精度限制为 15 位:尝试在单元格中输入 20 位数字(例如 20 个 2)并将格式设置为“数字” - 你会发现你丢失了一些信息。在处理不用作数字的“数字”时,您应该始终在填充内容之前将单元格格式化为文本

标签: excel vba digits


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2022-11-13
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多