今仮に、元データの
A B
都道府県 会社名
という表が存在しているシートのシート名がSheet1であるものとし、その中で「都道府県」や「会社名」などといった項目名が入力されている行が1行目であるものとします。
そして、Sheet3のA列に都道府県の名称が北にあるものから順番に並べられている表が作表されていて、Sheet3のD列~F列を作業列として使用して、Sheet2のA3以下に「拠点が北にあるものの順に並べ替えられた会社名」が、同じくB3以下に「A列に名称が表示されている会社の拠点が存在している全ての都道府県名」が自動的に表示される様にするものとします。(尚、この回答文の下に表示されている添付画像中には、「どの様な順番で都道府県が並べられているのか」を示すためだけのためにSheet3のB列の所にJIS X 0401の都道府県コードのリストも併記されているところも写ってはいますが、本回答の方法による処理ではこのコードを必要とはしておりません)
その場合、まずSheet3のD2セルに次の関数を入力して下さい。
=IF(OR(INDEX(Sheet1!$A:$A,ROW())="",INDEX(Sheet1!$B:$B,ROW())=""),"",IF(COUNTIFS(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()-1),INDEX(Sheet1!$A:$A,ROW()),Sheet1!$B$1:INDEX(Sheet1!$B:$B,ROW()-1),INDEX(Sheet1!$B:$B,ROW())),"",IFERROR(MATCH(INDEX(Sheet1!$A:$A,ROW()),$A:$A,0)+COUNTIF(Sheet1!$B:$B,"<"&INDEX(Sheet1!$B:$B,ROW()))*100,"")))
次に、Sheet3のE2セルに次の関数を入力して下さい。
=IF(ISNUMBER($D2),IF(RANK($D2,$D:$D,1)=COUNTIF($D:$D,"<"&ROUNDDOWN($D2,-2))+1,MOD($D2,100)*10000000+INT($D2/100),""),"")
次に、Sheet3のF2セルに次の関数を入力して下さい。
=IF(ISNUMBER($D2),INDEX(Sheet1!$A:$A,ROW())&IF(COUNTIFS($D:$D,">"&$D2,$D:$D,"<"&ROUNDUP($D2,-2)),","&INDEX(F:F,MATCH(LARGE($D:$D,RANK($D2,$D:$D)-1),$D:$D,0)),""),"")
次に、Sheet3のD2~F2のセル範囲をコピーして、同シートのD列~F列の3行目以下に貼り付けて下さい。
次に、Sheet2のA3セルに次の関数を入力して下さい。
=IF(ROWS($3:3)>COUNT(Sheet3!$E:$E),"",INDEX(Sheet1!$B:$B,MATCH(SMALL(Sheet3!$E:$E,ROWS($3:3)),Sheet3!$E:$E,0)))
次に、Sheet2のB3セルに次の関数を入力して下さい。
=IF($A3="","",INDEX(Sheet3!$F:$F,MATCH(SMALL(Sheet3!$E:$E,ROWS($3:3)),Sheet3!$E:$E,0)))
次に、Sheet2のA3~B3のセル範囲をコピーして、同シートのA列~B列の4行目以下に貼り付けて下さい。
以上です。
お礼
その通りです。解決しました! 都道府県は、コード表を基にユーザーの並べ替えに 追加していたので、質問がうまくなくて申し訳なかったです。 ありがとうございます。助かりました!