Как настроить Excel VBA Loop для vlookup - PullRequest
0 голосов
/ 12 ноября 2018

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

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

image

[Изменить] Рассматривайте таблицу Dasboard как отдельную таблицу, в которой вводятся записи вручную. Рассматривайте таблицу журнала как таблицу продолжения, в которой хранится запись каждого часа для каждой даты. Записи из таблицы Dashboard публикуются в таблице журнала. Новое изображение прилагается Новое изображение

Я ввел эту функцию в столбце вывода в таблице журнала:

 =IF( AND(H3=$B$3,I3>= $C$3,I3<$D$3) ,$E$3,0)  + IF(AND(H3=$B$4,I3>= 
 $C$4,I3<$D$4) ,$E$4,0) + IF (AND(H3=$B$5,I3>= $C$5,I3<$D$5), $E$5,0)

Это отлично работает для меня при построении графиков, но проблема в том, что для каждой строки в панели инструментов мне нужно добавить новую функцию IF-And в приведенном выше примере. так, например, если я хочу добавить 4-ую строку панели мониторинга для синхронизации с журналом, мне нужно добавить

+If(AND(H3=$B$6,I3>=$C$6,I3<$D$6),$E$6,0)

Я хочу, чтобы каждая строка на приборной панели автоматически добавлялась каким-либо образом с помощью цикла: я = переменная

= If (AND(H3=$B$i,I3>= $C$i,I3<$D$i), $E$i,0)

Только один я будет больше 0, а остальные будут равны нулю. поэтому функция должна возвращать мне сумму всех i, а не только последнюю итерацию.

1 Ответ

0 голосов
/ 12 ноября 2018

Может быть, просто заполните формулу вручную? если настаивать с макросом, что-то вроде

Sub test()
Range("K3").Value = "X"
Range("K3:K10").FillDown
End Sub

замените "Х" на вашу формулу, оставьте "" замените K10 на то, как далеко вы хотите вниз

---- редактировать ----

позвольте мне остановиться ниже для вас,

  1. match (H3, B: B, 0) найдет правильную строку в B, которая = H, в случае H3 она найдет B3

  2. INDEX (B: E, MATCH (H3, B: B, 0) , 2) -> теперь он находит B3, индекс позволяет найти C3 (обратите внимание на 2,3, 4 в более поздних кодах, это означает столбец из B3)

  3. и (I3> = ..., J3> = ...) теперь у нас есть время начала и окончания, мы используем I и J для сравнения

  4. , если 3. верно, ищите выходной столбец, иначе 0

= ЕСЛИ (И (И3> = ИНДЕКС (Б: Е, MATCH (Н3, В: В, 0), 2), J3> = ИНДЕКС (В: Е, MATCH (Н3, В: В, 0) , 3)), ИНДЕКС (Б: Е, MATCH (Н3, В: В, 0), 4), 0) * * тысяча тридцать-один

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...