作業列を使わずに全自動(Shift+Ctrl+Enterの操作も不要)で行う方法です。(地区の表示は、回答No.1様の場合と同様に、1セル毎に1つの地区を表示し、複数のセルを使う事で全ての「過半数を占めている地区」を表示します)
今仮に、「シェア(%)」と入力されているセルがA1セルであるものとします。
まず、F2セルに次の関数を入力して下さい。
=IF(COLUMNS($F:F)>COUNTIF($B2:$E2,">50"),"",INDEX($B$1:$E$1,MATCH(LARGE($B2:$E2,COLUMNS($F:F)),IF(ISNUMBER(1/(LARGE($B2:$E2,COLUMNS($F:F))=LARGE($B2:$E2,COLUMNS($F:F)-1))),INDEX($B2:$E2,MATCH(E2,$B$1:$E$1,0)+1):$E2,$B2:$E2),0)+IF(ISNUMBER(1/(LARGE($B2:$E2,COLUMNS($F:F))=LARGE($B2:$E2,COLUMNS($F:F)-1))),MATCH(E2,$B$1:$E$1,0),0)))
次に、F2セルをコピーして、G3~I3の範囲に貼り付けて下さい。
次に、F3~I3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。
以上です。
尚、もし、シェアの各数値を入力するセルの書式設定の表示形式が、「標準」や「数値」等ではなく、「パーセンテージ」となっている場合には、関数の冒頭部分の
=IF(COLUMNS($F:F)>COUNTIF($B2:$E2,">50")
という部分の中の
">50"
を
">0.5"
に変更して、
=IF(COLUMNS($F:F)>COUNTIF($B2:$E2,">0.5"),"",INDEX($B$1:$E$1,MATCH(LARGE($B2:$E2,COLUMNS($F:F)),IF(ISNUMBER(1/(LARGE($B2:$E2,COLUMNS($F:F))=LARGE($B2:$E2,COLUMNS($F:F)-1))),INDEX($B2:$E2,MATCH(E2,$B$1:$E$1,0)+1):$E2,$B2:$E2),0)+IF(ISNUMBER(1/(LARGE($B2:$E2,COLUMNS($F:F))=LARGE($B2:$E2,COLUMNS($F:F)-1))),MATCH(E2,$B$1:$E$1,0),0)))
として下さい。
補足
ありがとうございます。もし地区が47都道府県、あるいは全市町村(1000程度)でしたら、別の記述になりますでしょうか。もしご存知でしたらご教示頂けると幸いです。