Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Add column based on a list from another table

I have two tables. Table 1 contains a list of keywords with the associated category. Table 2 contains a summary and description of work to be done. I want to calculate a column in Table 2 that will seach for values from the summary and description columns in Table 2 and then search the keywords column in Table 1 to see if any of the keywords are contained in the text. If found assign it the corresponding category for the keyword. If not, mark it Other.

 

Here is a simplified version of my data:

 

Table 1:

KeywordCategory
WIRINGNetwork
ROUTERNetwork
PCWorkstation
VMServer

 

Table 2: I'd like the results to populate in the Category column

SummaryDescriptionCategory
NETWORK CABLINGTHIS WORK IS TO REROUTE NETWORK WIRINGNetwork
ROUTER CONFIGTHIS IS TO CONFIGURE ROUTER 2Network
WORKSTATION REIMAGEREIMAGE BOB'S PCWorkstation
VM CONFIGURECONFIGURE VIRTUAL MACHINEServer
BATTERY REPLACEMENTREPLACE THE BATTERIES IN BOB'S MOUSEOther
  • Hi Anonymous

     

    Try this for your calculated column:

     

    Category = 
    VAR _ResultCategory =
        CONCATENATEX (
            VALUES ( Table1[Keyword] );
            IF (
                (
                    FIND ( Table1[Keyword]; Table2[Summary]; 1; 0 ) > 0
                        || FIND ( Table1[Keyword]; Table2[Description]; 1; 0 ) > 0
                );
                LOOKUPVALUE ( Table1[Category]; Table1[Keyword]; Table1[Keyword] )
            )
        )
    RETURN
    IF(LEN(_ResultCategory)=0;"Other";_ResultCategory)

     

    Code formatted with  

2 Replies

  • AlB's avatar
    AlB
    Community Champion

    Hi Anonymous

     

    Try this for your calculated column:

     

    Category = 
    VAR _ResultCategory =
        CONCATENATEX (
            VALUES ( Table1[Keyword] );
            IF (
                (
                    FIND ( Table1[Keyword]; Table2[Summary]; 1; 0 ) > 0
                        || FIND ( Table1[Keyword]; Table2[Description]; 1; 0 ) > 0
                );
                LOOKUPVALUE ( Table1[Category]; Table1[Keyword]; Table1[Keyword] )
            )
        )
    RETURN
    IF(LEN(_ResultCategory)=0;"Other";_ResultCategory)

     

    Code formatted with  

    • Anonymous's avatar
      Anonymous
      Not applicable

      Works perfectly. Thanks!