Как посчитать строку во всех столбцах только для строк, которые содержат определенное значение?

0

Здесь новичок VBA, и я очень старался найти макросы, которые я могу настроить и объединить, чтобы сделать это, но не смог этого сделать.

Я вставил некоторые из моих данных в конце этого поста. Я хотел бы пройти через столбец 1 (ID_Num) и найти все строки с одинаковым ID_Num (они должны быть рядом друг с другом в столбце, поскольку лист отсортирован по ID_Num). Затем запишите счетчик 1 для каждого клиента, когда строка «A», «B» или «C» найдена под столбцом клиента для каждого блока строк с идентичными ID_Nums. Количество не должно превышать 1, т. Е. Если в диапазоне присутствует строка «A», «B» или «C», то регистрируется 1, в противном случае регистрируется 0. Другие возможности "D" или пробелы.

Я хотел бы иметь только одну строку на ID_Num после этого шага.

Наконец, я хотел бы сложить эти 1 и 0 для каждого ID_Num

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

Исходный образец данных

ID_Num | Клиент 1 Клиент 2 Клиент 3 Клиент 4 Клиент 5

ааа | AADBD

ааа | BDDBA

ааа | DDDAB

BBB | CADDC

ccc | DAAAD

ccc | ACBDD

ддд | DDDDD

Шаг первый

ID_Num | Клиент 1 Клиент 2 Клиент 3 Клиент 4 Клиент 5

ааа | 1 1 0 1 1

BBB | 1 1 0 0 1

ccc | 1 1 1 1 0

ддд | 0 0 0 0 0

Шаг второй

ID_Num | Окончательный счет

ааа | 4
BBB | 3
куб. 4
ддд | 0

Есть 100 столбцов клиентов.

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

Пример данных

Буду признателен за любую помощь. Заранее спасибо!

charistivity
источник
Я почти уверен, что это можно сделать с помощью формул, поэтому нет никакой необходимости использовать VBA, которую я вижу. Почему вы хотите использовать VBA?
DavePenn
Я должен был упомянуть, что использование VBA не было обязательным требованием. Прости за это.
charistivity

Ответы:

0

Если Sheet1 содержит исходные данные, в столбце Sheet2 A будет ID_Num, а Row1 - клиенты, в B2 напишите:

=IF(OR(COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"A")>0,COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"B")>0,COUNTIFS(Sheet1!$A:$A,$A2,Sheet1!B:B,"C")>0),1,0)

и перетащите его в той же строке до последнего клиента и вниз до последнего ID_Num, он изменится автоматически, и вы получите таблицу на первом этапе.
После завершения вы можете создать после последнего столбца Final Count и использовать:

=Sum(B2:ZZ2)
замените ZZ2 на последний столбец клиента и перетащите его вниз

Если вы хотите использовать только второй шаг Скопируйте столбец ID_Num и вставьте его на новый лист, а затем скопируйте столбец Окончательный счет, используйте специальные значения вставки на новом листе рядом со столбцом ID_Num.

Сэм
источник
Это сработало отлично! Большое спасибо, Сэм!
charistivity