Вернуть номер столбца на основе имени столбца в CSV-файле, используя .find - PullRequest
0 голосов
/ 04 ноября 2019

ниже - это фрагмент кода, который работает с файлами xlsx, но не с файлами csv, по крайней мере, я так подозреваю.

Цель кода - найти имя столбца, например ProductType и возвращает номер столбца, в котором хранится упомянутое имя столбца.

Опять же, этот фрагмент кода отлично работает, когда я запускаю его на xslx типах файлов, но при этом на файлах csvне работает.

Любая помощь приветствуется.

Sub ma1()

    Dim RA As Excel.Workbook

    Set RA = Workbooks.Open("G:\depts\Pri\RA.csv")

    RA_col = RA.Sheets(1).Cells.Find(What:="ProductType", MatchCase:=True, LookAt:=xlWhole).Column

    Debug.Print (RA_col)


End Sub

1 Ответ

2 голосов
/ 04 ноября 2019

Вместо использования поиска, если вам нужно только найти столбец в строке заголовка, вы можете просто перебрать первую строку в поисках совпадения. Я пытался заключить это в функцию, которую вы можете вызвать.

Вы указываете путь к файлу, имя столбца и, необязательно, тип сравнения, который хотите выполнить. По умолчанию сравнение выполняется с учетом регистра (двоичное), но также может быть заменено на регистр без учета регистра.

Функция

Option Explicit

Public Function GetColumnIndexFromFile(FilePath As String, ColumnName As String, Optional CompareMethod As VbCompareMethod = VbCompareMethod.vbBinaryCompare)
    Dim wb          As Workbook
    Dim ws          As Worksheet
    Dim Column      As Range
    Dim Columns     As Range
    Dim ColumnIndex As Long

    Set wb = Workbooks.Open(FilePath)
    Set ws = wb.Sheets(1)
    With ws
        Set Columns = .Range(.Cells(1, 1), .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column))
    End With

    For Each Column In Columns
        If StrComp(Column.Value2, ColumnName, CompareMethod) = 0 Then
            GetColumnIndexFromFile = Column.Column
            Exit Function
        End If
    Next
End Function

Пример использования

Public Sub ExampleCall()
    Debug.Print GetColumnIndexFromFile("G:\depts\Pri\RA.csv", "ProductType")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...