[SalesForce] formula field to display multi select picklist (selected values)

I have a Multi-select picklist in account object and I want to display the selected picklist values in contact object using a formula field. I came across many using multiple If conditions. In my scenario, I have 20+ values in Multi-select picklist, how am I supposed to do that

Best Answer

To update a contact object formula field based on the values from the account object multi-select picklist . In contact formula field write down as

IF(INCLUDES(Account.Multi_select__c,"value"),"value;",null)&
IF(INCLUDES(Account.Multi_select__c,"value"),value;",null)&
IF(INCLUDES(Account.Multi_select__c,"value"),"value;",null)&
IF(INCLUDES(Account.Multi_select__c,"value"),"value;",null) 

and goes on. When my formula field has more characters this is the error I faced

The formula expression is invalid: Formula is too long (6,647 characters). Maximum length is 3,900 characters . In that case, try to use trigger its a good choice.

  trigger accountTrigger on Account(after insert,after update) {
    List<contact>contactlst = new List<contact>();
    List<contact> cnt = new List<contact>();
    map<string,string> mapOfAccntIds =  new map<string,string>();

    for(Account act:Trigger.new){
        mapOfAccntIds.put(act.id, act.Multi_select__c);
    }

    contactlst = [select id, Multi_Select_Text__c, name, AccountId from 
                    contact where AccountId IN: mapOfAccntIds.keySet()];

    for(contact c :contactlst ){
            c.Multi_Select_Text__c= mapOfAccntIds.get(c.accountId);
            cnt.add(c);      
    }
  }  
    if(cnt != null & cnt.Size()> 0)
    upsert cnt;
}