, поэтому я пытаюсь написать формулу, которая позволяет мне скопировать определенное значение, которое находится на листе 2 на лист 1, если и только если оно существует в столбце «Num Available» "Excel: Помогите преобразовать рабочую формулу в VBA/Macro
Sheet 2/Line 1:
B C
PRODUCT "NUM AVAILABLE"
A 12
B
C 15
D 13
E
Sheet 1:
RUN 1
PRODUCT "NUM AVAILABLE"
A 12
RUN 2
PRODUCT "NUM AVAILABLE"
C 15
RUN 3
PRODUCT "NUM AVAILABLE"
D 13
формула Я использую для Run 1 является:
=IF('Line 1'!C5>0,'Line 1'!$B5,IF('Line 1'!C6>0,'Line 1'!$B6,IF('Line 1'!C7>0,'Line 1'!$B7,IF('Line 1'!C8>0,'Line 1'!$B8,IF('Line 1'!C9>0,'Line 1'!$B9,IF('Line 1'!C10>0,'Line 1'!$B10,IF('Line 1'!C11>0,'Line 1'!$B11,IF('Line 1'!C12>0,'Line 1'!$B12,IF('Line 1'!C13>0,'Line 1'!$B13,IF('Line 1'!C14>0,'Line 1'!$B14,IF('Line 1'!C15>0,'Line 1'!$B15,IF('Line 1'!C16>0,'Line 1'!$B16,IF('Line 1'!C17>0,'Line 1'!$B17,IF('Line 1'!C18>0,'Line 1'!$B18,IF('Line 1'!C19>0,'Line 1'!$B19,IF('Line 1'!C20>0,'Line 1'!$B20,IF('Line 1'!C21>0,'Line 1'!$B21,IF('Line 1'!C22>0,'Line 1'!$B22,IF('Line 1'!C23>0,'Line 1'!$B23,IF('Line 1'!C24>0,'Line 1'!$B24,IF('Line 1'!C25>0,'Line 1'!$B25,IF('Line 1'!C26>0,'Line 1'!$B26,IF('Line 1'!C27>0,'Line 1'!$B27, "NO ENTRY")))))))))))))))))))))))
линии одно и то же, как листы.
Моя проблема в том, что этот код в конечном итоге становится массивным, когда я использую его на других линиях и увеличиваю количество прогонов, на которые я смотрю. Этот код выводит название продукта для Run 2, если он существует в «Число доступных» и не существует в опыте 1
Run 2:
=IF(AND(NOT(D$5='Line 1'!$B5),'Line 1'!C5>0),'Line 1'!$B5,IF(AND(NOT(D$5='Line 1'!$B6),'Line 1'!C6>0),'Line 1'!$B6,IF(AND(NOT(D$5='Line 1'!$B7),'Line 1'!C7>0),'Line 1'!$B7,IF(AND(NOT(D$5='Line 1'!$B8),'Line 1'!C8>0),'Line 1'!$B8,IF(AND(NOT(D$5='Line 1'!$B9),'Line 1'!C9>0),'Line 1'!$B9,IF(AND(NOT(D$5='Line 1'!$B10),'Line 1'!C10>0),'Line 1'!$B10,IF(AND(NOT(D$5='Line 1'!$B11),'Line 1'!C11>0),'Line 1'!$B11,IF(AND(NOT(D$5='Line 1'!$B12),'Line 1'!C12>0),'Line 1'!$B12,IF(AND(NOT(D$5='Line 1'!$B13),'Line 1'!C13>0),'Line 1'!$B13,IF(AND(NOT(D$5='Line 1'!$B14),'Line 1'!C14>0),'Line 1'!$B14,IF(AND(NOT(D$5='Line 1'!$B15),'Line 1'!C15>0),'Line 1'!$B15,IF(AND(NOT(D$5='Line 1'!$B16),'Line 1'!C16>0),'Line 1'!$B16,IF(AND(NOT(D$5='Line 1'!$B17),'Line 1'!C17>0),'Line 1'!$B17,IF(AND(NOT(D$5='Line 1'!$B18),'Line 1'!C18>0),'Line 1'!$B18,IF(AND(NOT(D$5='Line 1'!$B19),'Line 1'!C19>0),'Line 1'!$B19,IF(AND(NOT(D$5='Line 1'!$B20),'Line 1'!C20>0),'Line 1'!$B20,IF(AND(NOT(D$5='Line 1'!$B21),'Line 1'!C21>0),'Line 1'!$B21,IF(AND(NOT(D$5='Line 1'!$B22),'Line 1'!C22>0),'Line 1'!$B22,IF(AND(NOT(D$5='Line 1'!$B23),'Line 1'!C23>0),'Line 1'!$B23,IF(AND(NOT(D$5='Line 1'!$B24),'Line 1'!C24>0),'Line 1'!$B24,IF(AND(NOT(D$5='Line 1'!$B25),'Line 1'!C25>0),'Line 1'!$B25,IF(AND(NOT(D$5='Line 1'!$B26),'Line 1'!C26>0),'Line 1'!$B26,IF(AND(NOT(D$5='Line 1'!$B27),'Line 1'!C27>0),'Line 1'!$B27,IF(AND(NOT(D$5='Line 1'!$B28),'Line 1'!C28>0),'Line 1'!$B28,IF(AND(NOT(D$5='Line 1'!$B29),'Line 1'!C29>0),'Line 1'!$B29,IF(AND(NOT(D$5='Line 1'!$B30),'Line 1'!C30>0),'Line 1'!$B30,IF(AND(NOT(D$5='Line 1'!$B31),'Line 1'!C31>0),'Line 1'!$B31, "NO ENTRY")))))))))))))))))))))))))))
Когда я увеличить число Runss до 5, я превышать количество символов, которые я могу использовать. Мне нужна помощь. Формула делает именно то, что мне нужно - мне просто нужен более эффективный способ достижения моей цели. Рекомендации по упрощению VBA или формулы упрощены.
Что такое содержание 'линии 1' ! C5'? Вы можете найти сводную таблицу полезной. http://stackoverflow.com/help/accepted-answer может представлять интерес. – pnuts
Woah мои глаза горят! Я не могу это прочитать. Проведите некоторое исследование по SELECT CASE в VBA. Посмотрите на это: http://msdn.microsoft.com/en-us/library/cy37t14y.aspx – Gareth
Существует много способов сделать это, но все они будут включать использование цикла. Поэтому я предлагаю начать с изучения циклов. http://msdn.microsoft.com/en-us/library/office/aa221353(v=office.11).aspx –