Формула массива для извлечения данных по определенным критериям
Ниже приведена формула, которую я использую:
=IFERROR(IF(ISBLANK($A$1),IF(ROWS(A$2:A2)>$F$3, "", INDEX(INDIRECT("'"&C$1&"'!$D$4:$D$1000"),SMALL(IF(INDIRECT("'"&C$1&"'!$J$4:$J$1000")=$D$3, ROW(INDIRECT("'"&C$1&"'!$D$4:$D$1000"))-ROW(INDIRECT("'"&C$1&"'!$D$4"))+1),ROWS(A$2:A2)))),IF(ROWS(A$2:A2)>$F$3, "", IF(ISNA(MATCH(1,($A$1=(INDIRECT("'"&C$1&"'!$X$4:$X$1000")))*($D$3=(INDIRECT("'"&C$1&"'!$J$4:$J$1000"))),0)),"",INDEX(INDIRECT("'"&C$1&"'!$D$4:$D$1000"),SMALL(IF((INDIRECT("'"&C$1&"'!$J$4:$J$1000")=$D$3)*($A$1=(INDIRECT("'"&C$1&"'!$X$4:$X$1000"))), ROW(INDIRECT("'"&C$1&"'!$D$4:$D$1000"))-ROW(INDIRECT("'"&C$1&"'!$D$4"))+1),ROWS(A$2:A2)))))),"")
- что формула делает, извлекает данные на основе критериев, упомянутых в "$D$3"
- Но это только извлечение его из одного листа, для этого я использовал косвенную формулу и связать его с именем листа
- Я также дал ему критерии листа
- я хочу, чтобы формула проверяла, доступны ли критерии, упомянутые в "$D$3", на определенном листе; если да, извлеките все элементы и перейдите к следующим критериям проверки листа. если там есть предметы, извлеките их и повторите до 31 листа.
- Каким будет код VBA, если я хочу извлечь список данных из нескольких листов на отдельном листе на основе определенных критериев
заранее спасибо
Дополнительная информация: я упоминаю в качестве ответа, но это не решение проблемы, это то, что макрос записал
Sub ExtractValues()
'
' ExtractValues Macro
'
'
Range("B5").Select
Selection.FormulaArray = _
"=IFERROR(IF(ISBLANK(R1C1),IF(ROWS(R2C[-1]:R[-3]C[-1])>R3C6, """", INDEX(INDIRECT(""'""&R1C[1]&""'!$D$4:$D$1000""),SMALL(IF(INDIRECT(""'""&R1C[1]&""'!$J$4:$J$1000"")=R3C4, ROW(INDIRECT(""'""&R1C[1]&""'!$D$4:$D$1000""))-ROW(INDIRECT(""'""&R1C[1]&""'!$D$4""))+1),ROWS(R2C[-1]:R[-3]C[-1])))),IF(ROWS(R2C[-1]:R[-3]C[-1])>R3C6, """", IF(ISNA(MATCH(1,(R1C1=(INDIRECT(""'""&R1" & _
"C[1]&""'!$X$4:$X$1000"")))*(R3C4=(INDIRECT(""'""&R1C[1]&""'!$J$4:$J$1000""))),0)),"""",INDEX(INDIRECT(""'""&R1C[1]&""'!$D$4:$D$1000""),SMALL(IF((INDIRECT(""'""&R1C[1]&""'!$J$4:$J$1000"")=R3C4)*(R1C1=(INDIRECT(""'""&R1C[1]&""'!$X$4:$X$1000""))), ROW(INDIRECT(""'""&R1C[1]&""'!$D$4:$D$1000""))-ROW(INDIRECT(""'""&R1C[1]&""'!$D$4""))+1),ROWS(R2C[-1]:R[-3]C[-1])))))),""""" & _
")" & _
""
Range("B5").Select
End Sub
заранее спасибо