2017-08-29 4 views
0

J'ai une table avec des plages de données de C24: H28. Il y a des en-têtes pour chaque colonne de la rangée 23 (Notez que les données ne sont pas formatées comme une table, seulement une feuille de calcul). Dans la cellule A1, je veux afficher les noms d'en-tête pour toute colonne contenant des données inférieures à une valeur de 100 séparées par une virgule. Je sais que la fonction CONCATENATE d'EXCEL est ce que je recherche ici, mais je ne suis pas sûr de savoir comment créer la formule pour la concaténation conditionnelle basée sur le contenu des colonnes.concaténation conditionnelle de cellules en fonction des valeurs de cellule

Un exemple est tronquée ci-dessous:

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

Je veux la cellule A1 à lire Tom, Joe

J'espère éviter les macros si possible.

Répondre

1

Vous pouvez utiliser un si countif formule dans la formule de concaténer.

Quelque chose comme ceci:

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

La plage dans le countif est le nombre que vous voulez vérifier et la cellule de déclaration vraie "K13" etc. est l'en-tête que vous voulez concaténer. Je suis sûr que tout cela pourrait être transformé en une formule de tableau, mais ceux-ci deviennent effrayants.

Espérons que cela vous mène dans la bonne direction. Lol, était juste quelques minutes trop tard, mais je ferais la macro différente si une macro était impliquée. J'utiliserais une fonction au lieu d'un sous-programme pour que vous puissiez l'appeler dans une cellule comme = CustomConcat (Plage à vérifier) ​​

+0

Parfait, fonctionne exactement comme je le voulais. Je vous remercie! – User247365

0

Cela devrait fonctionner, mais c'est moche et ne fait pas les virgules. Mais c'est un bon début pour toi.

=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,"")) 

beaucoup plus propre si les macros ont été impliqués:

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