TEXTJOIN per xl2010 / xl2013 con criteri

Ho 2 fogli di lavoro. Il primo foglio di lavoro ha circa 100 righe ma siamo interessati solo alla colonna Y. Le celle nella colonna Y hanno una combinazione di celle vuote (“”), testo e numeri e celle che visualizza # N / D. Simile all’immagine ma con un set di dati più grande.

Colonna L

Nel 2 ° foglio di lavoro, c’è una cella che vorrei catturare le celle con “testi e numeri” e visualizzarle ogni record in una linea diversa all’interno della stessa cella (ad esempio se ci fossero 12 su 100 celle con “testi” e numeri ‘, quindi vorrei visualizzare queste informazioni in una cella particolare nel 2o foglio di lavoro.

inserisci la descrizione dell'immagine qui

Ho provato qualcosa del genere ma sembra catturare solo la prima riga di testo (es. La riga del titolo):

=IFERROR(INDEX('1Comms'!Y:Y,MATCH(TRUE,'1Comms'!Y:Y"",0)),"") 

C’è un modo per perdere anche il titolo?

Cosa sto sbagliando e c’è un modo per farlo?

Questa funzione TextJoinIfs definita dall’utente (alias UDF) fornisce funzionalità TEXTJOIN di base alle versioni di Excel 2003 – 2013 nonché funzionalità estese per tutte le versioni aggiungendo il controllo degli errori facoltativo, l’univocità, l’ordinamento e un paramarray di condizioni per criteri semplici.

Questo codice UDF TextJoinIfs appartiene a un foglio di codice del modulo pubblico; es. Libro1 – Modulo1 (codice).

 Option Explicit Public Function TextJoinIfs(delim As String, iOptions As Long, iIgnoreHeaderRows As Long, _ rng As Range, ParamArray pairs()) As Variant 'TEXTJOINIFS - Basic TEXTJOIN functionality for XL2003-XL2013 versions ' Expanded TEXTJOINIFS functionality for all versions ' =TextJoinIfs(, , , , [criteria_range1, criteria1], [criteria_range2, criteria2], …) ' OPTIONS ' +2 Include blanks ' +4 Include worksheet errrors ' +8 Unique list ' +16 Sort ascending (cannot be used with 17) ' +17 Sort descending (cannot be used with 16) If Not CBool(UBound(pairs) Mod 2) Then TextJoinIfs = CVErr(xlErrValue) Exit Function End If Dim i As Long, j As Long, a As Long, arr As Variant Dim bIncludeBlanks As Boolean, bIncludeErrors As Boolean, bUniqueList As Boolean Dim bSorted As Boolean, bDescending As Boolean bIncludeBlanks = CBool(2 And iOptions) bIncludeErrors = CBool(4 And iOptions) bUniqueList = CBool(8 And iOptions) bSorted = CBool(16 And iOptions) bDescending = CBool(1 And iOptions) Set rng = Intersect(rng, rng.Parent.UsedRange.Offset(iIgnoreHeaderRows - rng.Parent.UsedRange.Rows(1).Row + 1, 0)) With rng ReDim arr(.Cells.Count) If Not IsMissing(pairs) Then For i = LBound(pairs) To UBound(pairs) Step 2 Set pairs(i) = pairs(i).Resize(rng.Rows.Count, rng.Columns.Count).Offset(iIgnoreHeaderRows, 0) Next i End If For j = 1 To .Cells.Count If CBool(Len(.Cells(j).Text)) Or bIncludeBlanks Then If Not IsError(.Cells(j)) Or bIncludeErrors Then If IsError(Application.Match(.Cells(j).Text, arr, 0)) Or Not bUniqueList Then If IsMissing(pairs) Then arr(a) = .Cells(j).Text a = a + 1 Else For i = LBound(pairs) To UBound(pairs) Step 2 If Not CBool(Application.CountIfs(pairs(i).Cells(j), pairs(i + 1))) Then Exit For Next i If i > UBound(pairs) Then arr(a) = .Cells(j).Text a = a + 1 End If End If End If End If End If Next j End With ReDim Preserve arr(a - 1) If bSorted Then Dim tmp As String For i = LBound(arr) To UBound(arr) - 1 For j = i + 1 To UBound(arr) If CBool(LCase(CStr(arr(i))) < LCase(CStr(arr(j))) And bDescending) Xor _ CBool(LCase(CStr(arr(i))) > LCase(CStr(arr(j))) And Not bDescending) Then tmp = arr(j): arr(j) = arr(i): arr(i) = tmp End If Next j Next i End If TextJoinIfs = Join(arr, delim) End Function 

Sintassi:

 =TextJoinIfs(, , , , [criteria_range1, criteria1], [criteria_range2, criteria2], …) 

Documentazione

inserisci la descrizione dell'immagine qui

Esempio 1

Semplice operazione TextJoin che elimina gli spazi vuoti e gli errori, mantenendo solo stringhe univoche. Concatenato con un delimitatore di avanzamento riga (vbLF) ma ignorando le prime due righe di intestazione e ordinate in ordine crescente.

 =textjoinifs(CHAR(10), 24, 2, A:A) 

inserisci la descrizione dell'immagine qui

Esempio 2

Operazione TextJoinIfs espansa che elimina gli spazi vuoti e gli errori, mantenendo solo stringhe univoche. Concatenato con un delimitatore di punto e virgola / spazio. Un insieme di condizioni di intervallo e criteri.

 =textjoinifs("; ", 8, 0, B:B, A:A, A2) 

inserisci la descrizione dell'immagine qui

Esempio 3

Operazione TextJoinIfs espansa che elimina gli spazi vuoti e gli errori. Concatenato con un delimitatore virgola / spazio. Coppie di condizioni multiple che usano i confronti matematici.

 =textjoinifs(", ", 0, 0, B:B, A:A, ">="&D2, A:A, "< ="&E2) 

inserisci la descrizione dell'immagine qui


Mille grazie a Lorem Ipsum Generator per il contenuto della stringa di esempio.