Excel 从csv文件导入某些列

Excel 从csv文件导入某些列,excel,vba,csv,split,Excel,Vba,Csv,Split,我正在尝试将csv文件和特定列导入excel,然后根据特定列拆分数据 我对VBA编程有点陌生,只懂基本编程,不幸的是,我尝试的代码没有达到预期的效果 我包含了要导入excel的csv文件的链接: 或截图: 此文件是从会计软件导出的库存列表。我们需要尝试对此列表进行排序,以便盘点,需要将以下内容调整为csv文件: 该文件需要导入excel,并且只需要导入某些列,这些列是 A列:代码 B栏:说明 C栏:类别 AA列:文本用户字段1(在会计软件中它是仓位号,这很重要,因为盘点通常根据零件的仓位号进行

我正在尝试将csv文件和特定列导入excel,然后根据特定列拆分数据

我对VBA编程有点陌生,只懂基本编程,不幸的是,我尝试的代码没有达到预期的效果

我包含了要导入excel的csv文件的链接: 或截图:

此文件是从会计软件导出的库存列表。我们需要尝试对此列表进行排序,以便盘点,需要将以下内容调整为csv文件:

  • 该文件需要导入excel,并且只需要导入某些列,这些列是
  • A列:代码

    B栏:说明

    C栏:类别

    AA列:文本用户字段1(在会计软件中它是仓位号,这很重要,因为盘点通常根据零件的仓位号进行)

    AP列:数量

    导出数据将始终是相同的列和标题

  • 然后,需要根据AA列:文本用户字段1拆分excel文件

  • AA列:文本用户字段1“SO0000”中的特定数据需要过滤,以仅包括不等于零(AP列:数量)的项目(A列和B列),这意味着应从列表中删除数量为零(AP列:数量)且具有“SO0000”(AA列:文本用户字段1)的所有项目(A列:代码)

  • 我在考虑使用表1中的按钮,它们的名称如下:

    导入项目按钮:导入excel文件第2页中的csv文件

    拆分数据按钮:要根据列AA:Text User字段1拆分项目,最好根据列AA:Text User字段1中的数据命名每个工作表


    如果有人能帮助我进行VBA编程,我将不胜感激。

    请不要包含指向包含宏的文件的外部链接,因为这可能会很危险。您好,不,此文件没有任何宏,它只是一个csv文件。最好包含相关信息(至少是其中的一部分)或者问题本身的数据截图。大多数人都会犹豫是否要下载任何东西来帮助你。好吧,我会尝试截图,但这是一个指向google drive的链接。虽然可以安全地查看它,但不需要下载,因为截图是问题中的描述(“导入项目按钮:导入表2中的excel文件”)非常无用…请不要包含指向文件中包含宏的外部链接,因为这可能很危险。嗨,不,此文件没有任何宏。它只是一个csv文件。最好在问题本身中包含相关信息(至少部分)或数据的屏幕截图。大多数人都会犹豫是否要下载任何东西来帮助你。好吧,我会尝试截图,但这是一个指向google drive的链接。虽然可以安全地查看它,但不需要下载,因为截图是问题中的描述(“导入项目按钮:导入表2中的excel文件”)非常感谢,请允许我问一下代码的每一部分都在做什么,我只是想学习和理解代码命令文件做什么。非常感谢,非常感谢,请允许我问一下代码的每一部分都在做什么,我只是想学习和理解代码命令文件做什么。我非常感激
    Sub CsvFile_Read()
        Dim vR(), vDB
        Dim WbCSV As Workbook, Wb As Workbook
        Dim Ws As Worksheet
        Dim i As Long, n As Integer
        Dim vFile As Variant
    
        
        Application.ScreenUpdating = False
        Set Wb = ThisWorkbook
        Set Ws = Wb.Sheets(2)
        
        'Select a text file through the file dialog.
        'Get the path and file name of the selected file to the variable.
        vFile = Application.GetOpenFilename("ExcelFile *.txt,*.txt;*.csv", _
           Title:="Select CSV file", MultiSelect:=False)
           
        'If you don't select file, exit sub.
        If TypeName(vFile) = "Boolean" Then Exit Sub
        
        'The selected text file is imported into an Excel file. format:2 is csv, format:1 is tab
        Set WbCSV = Workbooks.Open(Filename:=vFile, Format:=2)
        
        'Bring all the contents of the sheet into an array.
        With WbCSV.Sheets(1)
            vDB = .UsedRange
            For i = 1 To UBound(vDB, 1)
                'AA column = 27, AP column = 42
                If vDB(i, 27) = "SO0000" And vDB(i, 42) = 0 Then
                Else
                    'Get the contents corresponding to the dynamic array. Bring the matrix to the inverted state.
                    n = n + 1
                    ReDim Preserve vR(1 To 5, 1 To n)
                    vR(1, n) = vDB(i, 1)
                    vR(2, n) = vDB(i, 2)
                    vR(3, n) = vDB(i, 3)
                    vR(4, n) = vDB(i, 27)
                    vR(5, n) = vDB(i, 42)
                End If
            Next i
        End With
        'Colse the text file
        WbCSV.Close (0)
            
        'The dynamic array is recorded in sheet2.Bring the row to the inverted state.
        With Ws
            .UsedRange.Clear
            .Range("a1").Resize(n, 5).Value = WorksheetFunction.Transpose(vR)
        End With
        Application.ScreenUpdating = True
    End Sub