首页 文章

Excel宏将数据导入Excel工作表

提问于
浏览
0

我厌倦了寻找解决方案 . 我正在使用Excel宏将数据导入Excel工作表 . 代码本身从另一个excel表中获取数据并循环遍历给出的excel表数 . 对于其他工作表,它工作正常,但在某些情况下,它导入的数据多于所需的和随机进入任何列 . 假设它必须循环代码9次,然后它导入9个正确的行(具有正确的excel单元格格式)以及随机excel单元格格式的一些其他随机行我的宏代码如下:

“shtData”是必须从中导入数据的Excel文件 . “shtCurrent”是写入宏并导入数据的工作表 .

Set ACell = shtData.Cells.Find("Fund", LookIn:=xlValues, LookAt:=xlWhole, after:=shtData.Range("A1")).Offset(2, 0)
                Set BCell = ACell.End(xlDown)

    For Each DataCell In shtData.Range(ACell, BCell)


            Set rCell = shtCurrent.Range("A65000").End(xlUp).Offset(1, 0)

            rCell.Value = DataCell.Offset(0, 7).Value 'date
            rCell.Offset(0, 1).Value = DataCell.Offset(0, 8).Value 'date format
            rCell.Offset(0, 2).Value = "TEXT"
            rCell.Offset(0, 3).Value = "TEXT"
            rCell.Offset(0, 4).Value = "TEXT"
            ' null value required for rCell.Offset(0, 5)
            rCell.Offset(0, 6).Value = "100.00"
            rCell.Offset(0, 7).Value = "100.00"
            rCell.Offset(0, 8).Value = "100"
            rCell.Offset(0, 9).Value = "100"
            ' null value required for rCell.Offset(0, 10)
            rCell.Offset(0, 11).Value = RunDate 'date format
            rCell.Offset(0, 12).Value = "TEXT"
            rCell.Offset(0, 14).Value = shtData.Range("C5").Value 'Date format

    Next DataCell

拜托,我对此感到厌烦 . 任何帮助将不胜感激 .

1 回答

  • 0

    没有更多信息,一旦定义了工作表对象,代码似乎对我来说很好 . 因为你的代码不是一个可重复的例子 - 即你省略了一些细节 - 我不知道如何定义 shtData (如果有的话) .

    请尝试发布可重复的示例 - 因为这有助于获得更多答案 .

    无论如何..我创建了两个名为 shtDatashtCurrent 的工作表 . 我在代码中引用它们

    Dim shtData, shtCurrent As Worksheet
    Set shtData = Worksheets("shtData")
    Set shtCurrent = Worksheets("shtCurrent")
    

    我将下面的代码放在一个单独的模块中,并使用 Option Explicit ,因为这会强制用户/程序员思考和定义他/她正在使用的变量及其类型等 .

    这是您的代码,作为可重现的示例(显然需要 shtData 中的一些值) .

    Option Explicit
    
    Sub testtest()
    
    Dim ACell, BCell, DataCell, rCell As Range
    Dim shtData, shtCurrent As Worksheet
    
    Dim RunDate As Date
    RunDate = Now()
    
    Set shtData = Worksheets("shtData")
    Set shtCurrent = Worksheets("shtCurrent")
    
    Set ACell = shtData.Cells.Find("Fund", LookIn:=xlValues, LookAt:=xlWhole, after:=shtData.Range("A1")).Offset(2, 0)
    Set BCell = ACell.End(xlDown)
    
    
        For Each DataCell In shtData.Range(ACell, BCell)
    
    
                Set rCell = shtCurrent.Range("A65000").End(xlUp).Offset(1, 0)
    
                rCell.Value = DataCell.Offset(0, 7).Value 'date
                rCell.Offset(0, 1).Value = DataCell.Offset(0, 8).Value 'date format
                rCell.Offset(0, 2).Value = "TEXT"
                rCell.Offset(0, 3).Value = "TEXT"
                rCell.Offset(0, 4).Value = "TEXT"
                ' null value required for rCell.Offset(0, 5)
                rCell.Offset(0, 6).Value = "100.00"
                rCell.Offset(0, 7).Value = "100.00"
                rCell.Offset(0, 8).Value = "100"
                rCell.Offset(0, 9).Value = "100"
                ' null value required for rCell.Offset(0, 10)
                rCell.Offset(0, 11).Value = RunDate 'date format
                rCell.Offset(0, 12).Value = "TEXT"
                rCell.Offset(0, 14).Value = shtData.Range("C5").Value 'Date format
    
        Next DataCell
    End Sub
    

相关问题