Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本文件复制到Excel工作表_Excel_Vba - Fatal编程技术网

将文本文件复制到Excel工作表

将文本文件复制到Excel工作表,excel,vba,Excel,Vba,我试图通过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 Fo

我试图通过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
Sub-Inte()
Dim j,LastCol尽可能长
Dim inval作为变体
LastRow=单元格(Rows.Count,1).End(xlUp).Row
LastCol=Sheet12.单元格(1,Columns.Count).结束(xlToLeft).列
对于i=1到最后一行
对于j=7到LastCol
如果单元格(i,j).Value Int(单元格(i,j).Value),则
如果InStr(1,单元格(i,j).Value,“.0”)>0,则
单元格(i,7)。值=单元格(i,7)和单元格(i,j)
细胞(i,j).透明内容物
如果结束
下一个j
接下来我
'列(“”)。特殊单元格(xlCellTypeBlanks)。EntireRow.Delete
范围(“A14”、“A21”).EntireRow.Delete
端接头
在创建逻辑时没有可以遵循的特定模式,所以在将文本文件中的所有数据复制到Excel中之后,我开始在Excel中基于行和列进行编码

现在我想添加一些列数据,即col7、col8、col9,直到达到一个十进制值,即price列
470.00
(必须在单独的列中),因此第7列的所有before列都必须添加空格

在下一行中,它可以是col7,col8被追加


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

要测试单元格值是否为十进制值,可以使用如下内容

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

有问题吗?① 我缩进了您的代码,这样您就可以看到,如果缺失,则会有一个
结尾。此代码应引发异常/错误。② 如果将
Dim j声明为Long,则仅将
LastCol
声明为
Long
,而将
j
声明为Variant
。必须为VBA
Dim j中的每个变量指定一种类型,长度为LastCol
。您还应该使用
选项Explicit
来确保声明所有变量。例如,
i
LastRow
未声明。这只是从主函数调用的一个子函数,因此在复制实际数据时,很抱歉我遗漏了几个。所以我想要一个代码,它读取第7列的所有行,直到到达一个十进制值单元格,并将中间的所有单元格追加到第7列单元格。如果InStr(1,cells(i,j).value,“.0”)>0,那么该代码无法检查单元格是否包含十进制列,因此我需要一些代码,它检查循环中的单元格值是否为十进制。请提供适当的示例数据以及预期的输出结果。我们需要a来正确地帮助您。isDecimal逻辑不起作用:(…我希望这个逻辑一直执行到循环,在第7列中,所有正确的列值都必须追加,直到到达decimal value列