Как выбрать определенный столбец по имени заголовка в VBA и использовать выбранный столбец для других действий (removeduplicates, автофильтр) - PullRequest
0 голосов
/ 16 мая 2019

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

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

На мой взгляд (не с синтаксисом VBA) это было бы что-то вроде

если заголовок столбца = "электронная почта" затем выполнить функцию еще поиск по заголовку следующего столбца

Я нашел эти возможные решения Найти заголовок столбца по имени и выбрать все данные под заголовком столбца (Excel-VBA)

https://www.extendoffice.com/documents/excel/4879-excel-select-column-by-header-name.html

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

Функции, которые мне нужны для правильного выбора столбцов, приведены ниже. Цель состоит в том, чтобы удалить дубликаты столбцов формы с заголовком электронной почты, удалить тесты из столбцов с именем заголовка и адресом электронной почты, а затем подсчитать количество потенциальных клиентов с помощью utm_source = facebook и utm_source = instagram.

 Range("G6").Select
    ActiveSheet.Range("$A$1:$AA$2130").RemoveDuplicates Columns:=13, Header:= _
        xlYes
    Cells.Select
    Selection.AutoFilter
    Range("M5").Select
    ActiveSheet.Range("$A$1:$AA$2130").AutoFilter Field:=13, Criteria1:= _
        "=*test*", Operator:=xlAnd
    Rows("2:2159").Select
    Selection.Delete Shift:=xlUp
    Range("M2127").Select
    ActiveSheet.Range("$A$1:$AA$2125").AutoFilter Field:=13
    ActiveSheet.Range("$A$1:$AA$2125").AutoFilter Field:=12, Criteria1:= _
        "=*test*", Operator:=xlAnd
    Rows("2:2155").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$AA$2123").AutoFilter Field:=12
    Range("N8").Select
    Sheets.Add After:=ActiveSheet
    ActiveCell.FormulaR1C1 = "facebook"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = _
        "=COUNTIF('unbounce??'!C[20],""facebook"")+COUNTIF('unbounce??'!C[20],""instagram"")"
...