Я не программист по профессии, но я пытаюсь автоматизировать небольшую часть отчета, который я использую каждый день, из любопытства и личного интереса.По сути, мы получаем и вручную вводим контактную информацию (имя, адрес электронной почты, номер телефона и т. Д.) И помечаем отдельные группы, к которым человек хочет присоединиться.Затем мы копируем и вставляем эту контактную информацию, введенную в отдельный лист для каждой группы.
Я хочу иметь макрос, который проверяет определенные столбцы для каждой группы интересов на наличие «x», и, если он находит это значение, скопируйте и вставьте собранную контактную информацию в таблицу конкретных групп интересов.Люди могут выбирать несколько групп интересов, и их контактная информация добавляется в каждую отдельную электронную таблицу групп интересов.
Столбцы отчета выглядят следующим образом:
Group 1 Group 2 Group 3 Name Organization Phone E-mail Notes
Row Contact Information looks similar to:
x x John ABC Inc. 000-000-0000 john.smith@fake.com Call me ASAP!
Макрос проверяет помеченный мной столбец.заинтересованность в Группе 1, и если он находит «х», он копирует весь диапазон на лист Группы 1.
Я хочу, чтобы он мог проверять несколько столбцов (то есть группы 1, 2, 3) на «x», а затем скопировать и вставить информацию справа от этих столбцов на соответствующий лист для группы.Если они заинтересованы в нескольких группах, их контактная информация должна быть скопирована на каждый конкретный лист. \
Нужно ли иметь отдельные счетчики для каждого листа группы, и есть ли способ написать оператор if then, который проверяетдля х в каждом из столбцов, а затем запускает соответствующий код для копирования и вставки в эту группу?
Sub Update()
Dim c As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target1 As Worksheet
Dim Target2 As Worksheet
Dim Target3 As Worksheet
Set Source = ActiveWorkbook.Worksheets("Interest Group Tracking")
Set Target1 = ActiveWorkbook.Worksheets("Group 1")
j = 1 'Start copying to row 1 in target sheet
For Each c In Source.Range("A1:A1000") 'not sure if there is a way to not set a limit for the range
If c = "x" Then
Source.Rows(c.Row).Copy Target1.Rows(j + 1)
j = j + 1
End If
Next c
End Sub
Нет ошибок, кроме случайного синтаксиса, но на самом деле не знаю, как структурировать цикл для проверки для каждой группы.Я продолжаю исследовать и тестировать найденные вещи и буду обновлять их, если потребуется.