2010-07-23 8 views
0

J'ai une feuille de calcul Excel avec plusieurs colonnes de différentes longueurs, chacune remplie de nombres non triés. Chaque colonne a un en-tête.Excel: Valeur de recherche dans les colonnes

Existe-t-il un moyen de déterminer quelle (s) colonne (s) contient ce numéro? Par exemple, j'aimerais pouvoir faire = WHICHCOLS (123, A, Z) et avoir Excel me dire que les colonnes [B, C et K] contiennent des cellules avec une valeur de 123. Bien que, idéalement, , Je suis après une liste d'en-têtes séparées par des virgules.

Il serait également adéquat de trouver toutes les cellules, dans une gamme (ou des plages), qui ont cette valeur; par exemple. [B19, C32 et K908]. J'ai l'impression d'ignorer certaines fonctions intégrées évidentes.

Répondre

2

Il existe peut-être une méthode intégrée pour cela, mais vous pouvez également écrire votre propre fonction.

Mettez ce code dans VBA Module:

Public Function WHICHCOLS(searchValue As Double, srcRange As Range) As String 
    Dim rangeColumn As Range 
    Dim columnCell As Range 

    Dim headerRow As Long 
    headerRow = 1 ' HeaderInformation is in RowNr 1 ' 

    WHICHCOLS = vbNullString 
    For Each rangeColumn In srcRange.Columns 
     For Each columnCell In rangeColumn.Cells 
      If columnCell = searchValue Then 
       If WHICHCOLS <> vbNullString Then WHICHCOLS = WHICHCOLS & ", " 
       WHICHCOLS = WHICHCOLS & srcRange.Parent.Cells(headerRow, columnCell.Column) 
       Exit For 
      End If 
     Next columnCell 
    Next rangeColumn 
End Function 

Un appel exemple dans Excel serait:

=WHICHCOLS(7,A2:F3) 
Questions connexes