Я сделал фиктивную версию (фальшивые имена и очень сокращенные) 2 таблиц, с которыми я работаю это таблицы
Справочная информация:
Я автоматизирую данные между контрактами и шаблоном нашей бухгалтерии. Обратите внимание, что ни один из этих форматов электронных таблиц не может сдвинуться с места, поэтому я застрял. Это неуклюжий процесс, который я пытаюсь автоматизировать. Основным источником данных является вкладка «Контракты». Скажем, из 300 проектов субподрядчиков моя неделя с 24 января 2009 года одобрила 130 проектов. Логика того, что я пытаюсь выполнить:
- На вкладке Контракты, если в столбце R указано «Да» -
- На вкладке «Шаблон учета» (с формулами) в столбце B извлеките все ячейки контрактов! A из поставщиков, которым мы готовы платить.
- То же самое относится и к шаблону! (псевдоним для пути) В столбце M извлекайте конкретные контрактные идентификаторы утвержденных контрактных идентификаторов из контрактов! C.
Примечание. Я намеренно показал, что моя программа поддельных щенков НЕ одобрена для получения оплаты, это поможет продемонстрировать, как решить мою проблему
Моя ключевая проблема заключается в том, что Шаблон учета пропускает каждые 3 строки для Проекта, а в строке Контрактов есть день Проекта для каждой отдельной строки. Итак, для Template! A5 я извлекаю данные из Contracts! A2, а Template! A8 Я извлекаю данные из Contracts! A3 и т. Д.
Я смог (вроде) выполнить эту работу со смещением, соответствием строки и индекса:
=OFFSET(INDEX(Contracts!$C$2:$C$167,MATCH(ROWS(Contracts!$A$2:A17),Contracts!$AB$2:$AB$167,0)),-10,0)
Видите этот минус -10
? Для каждой новой 3-й строки, которую я начинаю с шаблона, я вручную изменяю его на -10, -12, -14 и т. Д. И т. Д. Не совсем сложно.
Глядя на то, как работают смещения и строки, похоже, что они сильно зависят от координат ячеек в книге контрактов. Тем не менее, я в идеале ищу это:
=IF(Contracts!R2="Yes",OFFSET(INDEX(Contracts!$C$2:$C$167,MATCH(ROWS(Contracts!$A$2:A5),Contracts!$AB$2:$AB$167,0)),-2,0))
Однако, как только я добавляю условное выражение (IF) в микс, это переориентирует строки моего смещения. Есть ли лучшие формулы для того, чего я пытаюсь достичь? Сценарий VBA, который может выполнить эту мечту, если я, INDEX, MATCH, OFFSET, ROW? Я не женат ни на одной из этих формул.
Я просмотрел несколько VBA, но, кажется, ничто не имеет условного выражения, как IF в качестве компонента.
РЕДАКТИРОВАТЬ:
За запрос, добавление скриншотов. Также есть ссылка на Google Sheet:
Вкладка «Контракты», намеренно скрывающая нерелевантные столбцы:
Вкладка Шаблон учета: