Forum Discussion

LFrench's avatar
LFrench
Frequent Visitor
1 year ago
Solved

Compare one value to multiple columns values

Here's the challenge I am trying to solve for. I tried a few IF/THEN Statements and couldn't quite get there. So, hopefully you can offer some assistance.   I have Column A with a list of Assignmen...
  • OwenAuger's avatar
    OwenAuger
    1 year ago

    Apologies, could you clarify the requirement as I may have misunderstood something. 😅

     

    I'm not sure what you mean by "compares Column A to Columns B, C, D ... and not the specific text within those columns."

     

    My original understanding of the requirement was:

    Within each row, if the value in column A is equal to at least one of the values in columns B, C, D, E, F, then add a column containing "MATCH" otherwise add a column containing "MISMATCH".

     

    EDIT: Did you mean that, aside from column A, there are an arbitrary number of additional columns which you want to reference without specifying their names? If so, I would still use List.Contains along with Record functions as follows:

    let
      Source = #table(
        type table [A = text, B = text, C = text, D = text, E = text, F = text],
        {
          {"MC/001", "MC/001", "MC/002", "MC/003", "MC/004", "MC/005"},
          {"MC/002", "BD/001", "BD/002", "BD/003", null, null},
          {"MC/003", "BD/001", "BD/002", "BD/003", "MC/001", "MC/003"},
          {"MC/004", "BD/001", "BD/002", "BD/003", "MC/001", "MC/002"}
        }
      ),
      ReferenceColumn = "A",
      #"Added Match" = Table.AddColumn(
        Source,
        "MATCH",
        each
          if List.Contains(Record.FieldValues(Record.RemoveFields(_, {ReferenceColumn})), Record.Field(_, ReferenceColumn)) then
            "MATCH"
          else
            "MISMATCH",
        type text
      )
    in
      #"Added Match"