Формула массива для извлечения данных по определенным критериям

Ниже приведена формула, которую я использую:

=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

заранее спасибо

0 ответов

Другие вопросы по тегам