【问题标题】:Parsing a Number解析数字
【发布时间】:2015-12-18 04:47:00
【问题描述】:

这是我的问题: 我正在使用 excel VBA 解析 xml。我将 XML 文件作为常规 excel 文件打开,然后转到我感兴趣的列。

该列中的单元格为 16 个字符。

所以我使用 Left 和 Right 函数解析每个字符并将它们保存在一个新文件中。

这 16 个字符大部分是数字字符,有时是字母字符。

例如 1111000011110000 或 1111YYYY00001111

当它解析 1111YYYY00001111 时——我得到正确的输出,

像在新文件中一样 Cell(1,1) =1 Cell(1,1) =1 Cell(1,2) =1 Cell(1,3) =1 Cell(1,4) =1 Cell(1 ,5) =Y 等等

但是当我解析 1111000011110000 时——我没有得到正确的输出

我得到 Cell(1,1) =1 Cell(1,2) =。单元格(1,3) =1 单元格(1,4) =1 单元格(1,5) =1 单元格(1,6) =0

我尝试将 NumberFormat="0" 用于我正在解析的列,但我仍然得到相同的输出。

我还尝试将调试变量存储为字符串,双整数,但我无法通过它。

这是我的代码:

Workbooks.Add
strip_concat = ActiveWorkbook.Name
Workbooks(strip_concat).Sheets(1).Cells(1, 1) = "Subid"
Workbooks(strip_concat).Sheets(1).Cells(1, 2) = "Strip#"
Workbooks(strip_concat).Sheets(1).Cells(1, 3) = "X"
Workbooks(strip_concat).Sheets(1).Cells(1, 4) = "Y"
Workbooks(strip_concat).Sheets(1).Cells(1, 5) = "Reject Code"
Workbooks(strip_concat).Sheets(1).Cells(1, 6) = "X-Y"
Workbooks.OpenXML Filename:=xml_file 
stripfile = ActiveWorkbook.Name
 For C = 3 To strip_col - 1
     r = 1
       Do
         Y = r
         x = C - 2
         Workbooks(strip_concat).Sheets(1).Cells(A, 3) = x
         Workbooks(strip_concat).Sheets(1).Cells(A, 4) = Y
         Workbooks(strip_concat).Sheets(1).Cells(A, 6).NumberFormat = "@"
         Workbooks(strip_concat).Sheets(1).Cells(A, 6) = x & "-" & Y
         Workbooks(strip_concat).Sheets(1).Cells(A, 1) =     Workbooks(stripfile).Sheets(1).Cells(C, Amkor_id_col)
         Workbooks(strip_concat).Sheets(1).Cells(A, 2) = ExtractElement(Workbooks(stripfile).Sheets(1).Cells(C, Strip_num_col), 2, ".")
         Workbooks(strip_concat).Sheets(1).Cells(A, 5) = Right(Left(Workbooks(stripfile).Sheets(1).Cells(C, Defect_data_col + i), r), 1)
         r = r + 1
         A = A + 1

         Loop Until (r > 16)

         If ((x Mod 13) = 0) Then i = i + 1
     Next C

来自xml文件1131111111111111

【问题讨论】:

  • 你用什么函数来解析值?
  • 您需要发布您的代码才能对其进行调试。不过我猜这是格式问题
  • Excel 可以处理最多 15 个有效数字的数值,因此您需要确保将任何导入的数据视为文本。

标签: vba excel


【解决方案1】:

我得到了它的工作..这就是我所做的

Dim x as variant
x = (Workbooks(stripfile).Sheets(1).Cells(C, Defect_data_col + i).Text
Workbooks(strip_concat).Sheets(1).Cells(A, 5) = Right(Left(x,r),1

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2016-12-19
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多