【问题标题】:Copy text file to Excel sheet将文本文件复制到 Excel 工作表
【发布时间】:2019-07-15 17:46:41
【问题描述】:

我尝试通过 VBA 将文本文件复制到 Excel 中。文件中有许多不需要的行和字符串,但我只希望特定的行和字符串出现在 Excel 工作表下。

Sub Inte()
    Dim j, LastCol As Long
    Dim inval As Variant

    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    LastCol = Sheet12.Cells(1, Columns.Count).End(xlToLeft).Column

    For i = 1 To LastRow
        For j = 7 To LastCol
           If Cells(i, j).Value <> Int(Cells(i, j).Value) Then
               If InStr(1, Cells(i, j).Value, ".0") > 0 Then
                   Cells(i, 7).Value = Cells(i, 7) & Cells(i, j)
                   Cells(i, j).ClearContents
               End If

       Next j
    Next i

    'Columns("").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Range("A14", "A21").EntireRow.Delete
End Sub

没有可以遵循的特定模式来创建逻辑,所以在将文本文件中的所有数据复制到 Excel 后,我开始在 Excel 中基于行和列进行编码

现在我希望添加一些列数据,即 col7,col8,col9 直到达到十进制值,即价格列 470.00(这必须在单独的列中),因此第 7 列中的所有前列都必须附加空格。

在下一行可能是 col7,col8 被追加

例如:洗涤剂 (LIME-A-WAY) 3.8 Lt. 是预期的,但是当文本文件被读入 excel 时,所有这些值都在单独的列中。

【问题讨论】:

  • 有问题吗?
  • ①我缩进了你的代码,所以你可以看到有一个 End If 丢失。此代码应引发异常/错误。 ② 如果您声明Dim j, LastCol As Long,则仅声明LastCol 声明As Long,但声明j 声明As Variant。您必须为 VBA Dim j As Long, LastCol As Long 中的 每个 变量指定一个类型。你也应该使用Option Explicit 来确保你声明了all你的变量。例如 iLastRow 没有被声明。
  • 这只是一个从主函数调用的子函数,所以在复制实际数据时,抱歉我错过了一些。所以我想要一个代码,它从第 7 列读取所有行,直到达到十进制值单元格,并将其间的所有单元格附加到第 7 列单元格。
  • If InStr(1, Cells(i, j).Value, ".0") > 0 然后,此代码无法检查单元格是否包含小数列,所以我想要一些代码,它检查循环中的单元格值是否为小数。
  • 请提供正确的示例数据以及您期望的输出结果。我们需要minimal reproducible example 来为您提供适当的帮助。

标签: excel vba


【解决方案1】:

要测试单元格值是否为小数,您可以使用类似这样的方法

Option Explicit

Public Function IsDecimal(ByVal InputValue As Variant) As Boolean
    IsDecimal = IsNumeric(InputValue) And InStr(1, InputValue, Application.DecimalSeparator) > 0
End Function

因此,您只需要一个而不是您的 2 个 If 语句:

If IsDecimal(Cells(i, j).Value) Then

【讨论】:

  • isDecimal 逻辑不起作用 :( .. 我希望此逻辑执行直到循环,在第 7 列中,所有正确的列值都必须附加到十进制值列为止
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2012-07-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多