Sub Separated_Values()
Application.ScreenUpdating = False
Dim Rng1 As Range, Rng2 As Range
Dim Adrs1 As String, Adrs2 As String
Dim MID1 As String, Mid1A As String, Mid2 As String, StrtNum1 As String, StrtNum2 As String, NumChr1 As String, NumChr2 As String, FndStrtNum1 As String, FndStrtNum2 As String
Set Rng1 = Range("A2:C4") '<<<<<
Set Rng2 = Range("D2:D4") '<<<<<
Adrs1 = Rng1.Address(True, True)
Adrs2 = Rng2.Address(True, True)
MID1 = "SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(Mid1A,""|"","",""),"";"","",""),"","","";,"")"
Mid1A = "MID("";""&TEXTJOIN("";"",1," & Adrs2 & ")&"";"",StrtNum1,NumChr1)"
StrtNum1 = "FIND(""|"",SUBSTITUTE("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"","";"",""|"",TRANSPOSE(ROW(INDIRECT(""1:""&LEN("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"")-LEN(SUBSTITUTE("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"","";"",""""))-1)))))"
FndStrtNum1 = "TRANSPOSE(ROW(INDIRECT(""2:""&LEN("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"")-LEN(SUBSTITUTE("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"","";"","""")))))"
NumChr1 = "FIND(""|"",SUBSTITUTE("";""&SUBSTITUTE(TEXTJOIN("";"",1," & Adrs2 & "),""|"","","")&"";"","";"",""|"",FndStrtNum1))-StrtNum1"
Mid2 = "MID(""""&TEXTJOIN("","",1," & Adrs1 & ")&"","",StrtNum2,NumChr2)"
StrtNum2 = "TRANSPOSE(FIND(""|"",SUBSTITUTE("",""&TEXTJOIN("","",1," & Adrs1 & ")&"","","","",""|"",(ROW(INDIRECT(""1:""&ROWS(" & Adrs1 & ")))-1)*COLUMNS(" & Adrs1 & ")+1),(ROW(INDIRECT(""1:""&ROWS(" & Adrs1 & ")))-1)*COLUMNS(" & Adrs1 & ")+1))"
FndStrtNum2 = "(ROW(INDIRECT(""2:""&ROWS(" & Adrs1 & ")+1))-1)*COLUMNS(" & Adrs1 & ")+1"
NumChr2 = "TRANSPOSE(FIND(""|"",SUBSTITUTE("",""&TEXTJOIN("","",1," & Adrs1 & ")&"","","","",""|"",FndStrtNum2),FndStrtNum2))-StrtNum2"
Rws = [LEN(SUBSTITUTE(SUBSTITUTE(";"&TEXTJOIN(";",1,$D$2:$D$4)&"",",",";"),"|",";"))-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(";"&TEXTJOIN(";",1,$D$2:$D$4)&"",",",";"),"|",";"),";",""))]
Rw = Rng1.Row + Rng1.Rows.Count + 3
cl = Rng1.Column
With Cells(Rw, cl).Resize(Rws, Rng1.Columns.Count + 1)
.FormulaArray = "=TRIM(MID(SUBSTITUTE(TRIM(MID(SUBSTITUTE(SUBSTITUTE(CONCAT(SUBSTITUTE(MID1,"","",MID2)),"";"","""",1),"";"",REPT("" "",999)),(ROW()-ROW(A$8)+1)*999-998,999)),"","",REPT("" "",999)),(COLUMN()-COLUMN(A$8)+1)*999-998,999))"
.Replace "MID1", MID1
.Replace "Mid1A", Mid1A
.Replace "StrtNum1", StrtNum1
.Replace "NumChr1", NumChr1
.Replace "FndStrtNum1", ndStrtNum1
.Replace "StrtNum1", StrtNum1
.Replace "MID2", Mid2
.Replace "StrtNum2", StrtNum2
.Replace "NumChr2", NumChr2
.Replace "FndStrtNum2", FndStrtNum2
.Replace "StrtNum2", StrtNum2
Application.ScreenUpdating = True
End With
End Sub