0
votes

Vlookup pour le statut en double

ive cherche des approches différentes pour résoudre mon problème, que ce soit avec Vlookup, index, index / match mais ne pouvait pas le comprendre encore.

im essayant de répertorier les mêmes co-locataires du même appartement sur la même ligne que montré sur la photo. Merci pour l'aide!

 a


2 commentaires

Êtes-vous autorisé à utiliser une colonne d'assistance qui allie des informations dans la colonne A et B?


Helper serait également utilisé. Il suffit d'essayer de le faire fonctionner = /


4 Réponses :


1
votes

Voici une méthode sans la colonne d'assistance:

Pour obtenir "John" dans la cellule B21, vous pouvez utiliser une formule de tableau * qui combinera la colonne A et B afin que vous puissiez correspondre à la fois aux deux critères (en utilisant " & "). La formule ressemblerait à ceci: xxx

pour obtenir "simon" dans la cellule C21, vous pouvez simplement copier le précédent car les panneaux de dollar s'assureront que les critères de recherche sont Réglage correctement.

Pour obtenir "Alex" dans D21, il est un peu plus délicat puisque vous essayez d'obtenir le 2e match. Une méthode pour obtenir un deuxième match est détaillée dans Cet article . Dans ce contexte, cela ressemblerait à ceci: xxx

*: besoin d'appuyer sur Ctrl + shift + Entrez dans les anciennes versions d'Excel (2010 et antérieure).


2 commentaires

Merci d'avoir essayé d'aider. Cependant, je reçois # N / A tout en utilisant simplement la première ligne de code. Je ne vois pas pourquoi le lookup_value est $ A11 & $ B10 dans la fonction correspondante


@Lou je n'avais pas autant de ligne vide que vous avez dans ma version. J'ai changé les références pour correspondre à celle de votre question.



-1
votes

Présumer que vos données sont dans les colonnes A2: C?, désignez des colonnes à droite comme destinataires de vos données réarrangées. Entrez les mêmes descriptions exactes dans leurs légendes (dans la rangée 1) comme utilisée dans la colonne d'état. J'ai utilisé des colonnes D: H et les légendes "principales" et "co-locataire" dans toutes les colonnes restantes. De cette façon, j'avais 4 colonnes pour les co-locataires. Vous avez besoin autant de colonnes qu'il pourrait y avoir des co-locataires comme maximum.

Entrez maintenant la formule ci-dessous dans la première cellule de la nouvelle colonne principale (c'était D2 dans mon exemple) et copiez-la sur toute la gamme, dans mon exemple D2: H6. C'est la même formule pour toutes les cellules.

= si (décalage ($ B2, colonne () - 4,0) = D $ 1, décalage ($ B2, colonne () - 4,1), "")

Observez que les 4 de ma formule sont le numéro de la colonne dans laquelle vous entrez la formule. Dans mon test, la colonne D, la quatrième colonne). Si vous utilisez une autre colonne, veuillez remplacer les deux événements de 4 avec le numéro de la colonne que vous avez choisie. Il en va de même pour la référence de la formule à 1 $ D $. La cellule spécifie la légende de la nouvelle colonne principale .

Sélectionnez maintenant la gamme complète avec la formule (D2: H6 dans mon test), copier et coller des valeurs spéciales>. Cela remplacera toutes les formules par les valeurs qu'ils ont générées. Vous pouvez maintenant supprimer des colonnes B: c.

Sélectionnez la plage complète (je n'ai pas encore supprimé B: C. Donc, c'était A2: H6 pour moi) et cliquez sur Supprimer les duplicates sur l'onglet . Spécifiez la colonne A à des doublons. Cette action ne conservera que la première rangée de chaque identifiant d'appartement supprimant toutes les autres, en particulier celles qui sont apparues défectueuses après avoir appliqué les formules. Si vous n'avez pas supprimé de colonnes B: C pourfois, ils sont définitivement redondants maintenant.


0 commentaires

1
votes

Vous dites ive recherché des approches différentes , ce n'est donc qu'une petite suggestion si vous utilisez Office365, vous pouvez utiliser la fonction de filtre pour cela.

Voici la formule: xxx

< img src = "https://i.stack.imgur.com/pai5m.png" alt = "Entrez la description de l'image ici">


0 commentaires

2
votes

une approche VBA

Sub list()

    Dim wb As Workbook, ws As Worksheet
    Dim iRow As Long, iHeaderRow As Long
    Dim sApt As String, sStatus, sName As String

    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")

    iRow = 4  'start
    sApt = CStr(ws.Cells(iRow, 1))
    Do While Len(sApt) > 0

        sStatus = ws.Cells(iRow, 2)
        sName = ws.Cells(iRow, 3)

        If Not dict.exists(sApt) Then
            dict.Add sApt, ""
        End If

        If LCase(sStatus) = "main" Then
            dict(sApt) = sName & dict(sApt) ' add to front
        Else
            dict(sApt) = dict(sApt) & ";" & sName ' add to back
        End If

        iRow = iRow + 1
        sApt = CStr(ws.Cells(iRow, 1))

    Loop

    ' result header
    iHeaderRow = iRow + 1
    ws.Cells(iHeaderRow, 1) = "Apt"
    ws.Cells(iHeaderRow, 2) = "Main"
    iRow = iRow + 2

    ' result table
    Dim k As Variant, ar As Variant, n As Integer, m As Integer
    For Each k In dict.keys
        ws.Cells(iRow, 1) = k
        ar = Split(dict(k), ";")
        n = UBound(ar)
        ws.Cells(iRow, 2).Resize(1, n + 1) = ar
        If n > m Then m = n ' max for n
        iRow = iRow + 1
    Next

    ' complete header row
    For n = 1 To m
        ws.Cells(iHeaderRow, n + 2) = "Co-tenant"
    Next
    MsgBox "Done"

End Sub


0 commentaires