Colonna di sottoinsieme di Excel a una matrix usando la formula

Ho bisogno di get i numbers di conto in una matrix che è indicata come 1 nella selezione della colonna. Risultati attesi sono – {FD_002_17, FD_004_17}. Sto progettando di utilizzare questo in un field di nome. Tabella di interesse per il sottogruppo

Ho provato ad usare

=INDEX(B2:B6,MATCH(1,A2:A6),1) 

Ma questo non riesce perché Match non restituisce un arrays.

Utilizzando il post ( https://stackoverflow.com/a/6755513/4050510 ) nella domanda di SO che gli abbracci indicati ho presentato la seguente formula per il tuo bisogno.

La sua formula di matrix che entri nella tua prima cella, quindi riempirla in basso utilizzando la piccola maniglia nell'angolo della cella selezionata.

=IFERROR(INDEX($B$2:$B$6;SMALL(IF($A$2:$A$6=1;ROW($B$2:$B$6)-MIN(ROW($B$2:$B$6))+1;"");ROW(A1)));"")

immettere qui la descrizione dell'immagine

È ansible farlo. È ansible assegnare l'intervallo denominato a una formula come:

=INDEX(Sheet1!$B:$B, N(IF({1}, MODE.MULT(IF(Sheet1!$A$2:$A$6=1, ROW(Sheet1!$A$2:$A$6)*{1,1})))))

Quindi puoi =INDEX(MyNamedRange, 2) tua gamma =INDEX(MyNamedRange, 2) come: =INDEX(MyNamedRange, 2)

EDIT:

È ansible impostare un foglio nascosto per avere un elenco filtrato dei valori in un intervallo di celle, oppure utilizzare VBA:

VBA:

Inserisci questo nel codemodule del foglio di lavoro del relativo foglio di lavoro:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub Dim ARange As Range, BRange As Range Dim i As Long, lastRow As Long, strCount As Long lastRow = Me.Range("A" & Me.Rows.Count).End(xlUp).Row Set ARange = Me.Range("A1:A" & lastRow) Set BRange = Me.Range("B1:B" & lastRow) Dim stringArr() As String For i = 1 To lastRow If ARange.Cells(i, 1).Value = 1 Then ReDim Preserve stringArr(0 To strCount) stringArr(strCount) = BRange.Cells(i, 1).Value strCount = strCount + 1 End If Next i Dim str As String str = Join(stringArr, ",") Dim dv As Validation Set dv = Me.Range("DVCell").Validation If Not dv Is Nothing Then dv.Modify _ Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=str Else dv.Add _ Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=str End If End Sub 

Per utilizzare formule e un foglio nascosto, utilizzare le tecniche per riempire un intervallo di celle e quindi assegnare l'intervallo dinamico alla validation dei dati ….