2017-08-29 3 views
0

Ich habe eine Tabelle mit Datenspannen von C24: H28. Für jede Spalte in Zeile 23 gibt es Kopfzeilen (Beachten Sie, dass die Daten nicht als Tabelle, sondern nur als Tabelle formatiert sind). In Zelle A1 möchte ich die Kopfzeilennamen für jede Spalte anzeigen, die weniger als einen Wert von 100 enthält, der durch ein Komma getrennt wird. Ich weiß, dass EXCEL CONCATENATE Funktion ist, was ich hier suche, aber ich bin nicht sicher, wie man die Formel zu bedingten Verkettungen basierend auf den Inhalt der Spalten erstellt.bedingte Verkettung von Zellen basierend auf Zellenwerten

Ein verkürztes Beispiel ist unten: wenn möglich

Tom  Joe  Bob ... 
125  245  325 ... 
60  600  164 ... 
305  20  410 ... 

Ich würde Zelle A1 Tom, Joe

ich Makros zu vermeiden, bin der Hoffnung, lesen möchten.

Antwort

1

Sie könnten ein, wenn countIf Formel in der concatenate Formel verwenden.

Etwas wie folgt aus:

= CONCATENATE (IF (COUNTIF (K14: K16 "< 100 ") <> 0, K13 &",", ""), IF (COUNTIF (L14: L16, "< 100") <> 0, L13 & "", ""), IF (COUNTIF (M14: M16, "< 100 ") <> 0, M13 &",", ""))

Der Bereich im Countif ist die Zahlen, die Sie überprüfen möchten, und die wahre Anweisung Zelle "K13" usw. ist die Kopfzeile, die Sie verketten möchten. Ich bin sicher, dass dies alles in eine Array-Formel umgewandelt werden könnte, aber diese werden irgendwie gruselig.

Hoffe das bringt Sie jedoch in die richtige Richtung.

lol, war nur ein paar Minuten zu spät, aber ich würde das Makro anders machen, wenn ein Makro beteiligt war. Ich würde eine Funktion anstelle einer Subroutine verwenden, so dass Sie es in einer Zelle wie = CustomConcat (zu überprüfender Bereich) aufrufen könnten

+0

Perfekt, funktioniert genau wie ich wollte. Vielen Dank! – User247365

0

Das sollte funktionieren, aber es ist hässlich und macht nicht die Kommas. Aber es ist ein guter Anfang für dich.

=CONCAT(IF(MIN(C24:C28)<100,C23,"")," ",IF(MIN(D24:D28)<100,D23,"")," ",IF(MIN(E24:E28)<100,E23,"")," ",IF(MIN(F24:F28)<100,F23,""),," ",IF(MIN(G24:G28)<100,G23,""),," ",IF(MIN(H24:H28)<100,H23,"")) 

viel sauberer, wenn Makros beteiligt waren:

Sub lessThan100() 
Dim r As Range, aR As Range, i As Integer, j As Integer, less As Boolean 
Set r = Range("C23:H28") 
Set aR = Range("A1") 
aR = "" 
For i = 1 To r.columns.Count 
    less = False 
    For j = 2 To r.Rows.Count 
    If r(j, i) < 100 Then 
     less = True 
     Exit For 
    End If 
    Next j 
    If less Then aR = aR & r(i) & ", " 
Next i 
If Right(aR, 2) = ", " Then aR = Left(aR, Len(aR) - 2) 
End Sub 
Verwandte Themen