- 締切済み
Excelで文字列のまとめ方
文字列のまとめ方で困っています。お手数ですが教えて下さいm(__)m 下記データがあったとします。 _ __A______B 1_種類___品名 2_調味料_醤油 3_調味料_食塩 4_調味料_胡椒 5_果物___りんご 6_野菜___胡瓜 7_野菜___玉葱 8_果物___バナナ 9_調味料_料理酒 ・ ・ ・ 上記データから下記のようにプルダウンリストにしたいです。 いきなりデータからプルダウンリストにするのが難しいかもしれないので、いったん上記を関数とかで他のセルにまとめさせておき、それをプルダウンリストにする方法でも大丈夫です。 (1)A列データプルダウン 一つ目のプルダウンリストには、A列の同じ文字を省いたもので選択可能にする。 上記例で言うと、調味料、果物、野菜が一つずつリストに表示される。(プルダウンリスト表示は2行目から) (1)B列データプルダウン 二つ目のプルダウンリストには、B列の文字を引っ張って来るが、上記A列データプルダウンで選択した文字と同じ行にある文字のみ選択可能にする。 例えばA列データプルダウンで果物を選んだら、このB列データプルダウンメニューにはりんごとバナナのみがリストに表示される。) 上記例のデータは9行目までですが、もっと多く存在し、A列、B列のデータ種類も他にまだあります。 データでA列の文字は被る事ありますが、B列の文字は被ることありません。 データとプルダウン箇所は可能であればシート分けしたいですが、困難な場合は同じワークシート内でも構いません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1をデータベースの表としてシート2でプルダウンの付いた入力シートを作成するとします。 シート1のAおよびB列には2行目か下方にお示しのような表が有るとします。そこで初めに作業列を作って対応します。 シート1の例えばC2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(A$2:A2,A2)=1,ROUNDDOWN(MAX(C$1:C1),-4)+10000+IF(COUNTIF(B$2:B2,B2)=1,1,0),IF(COUNTIF(B$2:B2,B2)=1,ROUNDDOWN(INDEX(C$1:C1,MATCH(A2,A$1:A1,0)),-4)+COUNTIF(C$1:C1,">="&ROUNDDOWN(INDEX(C$1:C1,MATCH(A2,A$1:A1,0)),-4))-COUNTIF(C$1:C1,">"&ROUNDDOWN(INDEX(C$1:C1,MATCH(A2,A$1:A1,0)),-4)+10000)+1,"")) このC列を利用してプルダウンに必要な表をE列から右側の列に作成することにして、E1セルには次の式を入力し、右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)=1,IF(COUNTIF($C:$C,COLUMN(A1)*10000+1)=0,"",INDEX($A:$A,MATCH(COLUMN(A1)*10000+1,$C:$C,0))),IF(ROW(A1)=2,"",IF(COUNTIF($C:$C,COLUMN(A1)*10000+ROW(A1)-2)=0,"",INDEX($B:$B,MATCH(COLUMN(A1)*10000+ROW(A1)-2,$C:$C,0))))) これで1行目には種類が並びますし、3行目以降にはその種類に応じた品名が並びます。なお、2行目が空白となっているのはプルダウンメニューを作成する際に先頭の行には空白の行を入れることで、プルダウンメニューの窓には空白の行から始まる品名が並ぶようにしています。 そこでシート2でプルダウンメニューを作るわけですがそのための作業として、それぞれの種類の応じた品名の表示されている範囲を名前として設定することが必要です。 初めにE2セルからE50までのセルを選択してから「数式」タブの「名前の定義」をクリックします。名前の窓にはE1セルに表示されている種類の名前、ここでは、調味料の文字を入力してOKします。F列G列…と同様の操作を行ってそれぞれのセル範囲に種類の名前を付けます。 そこでシート2での作業ですがA2セルから下方を選択してから、「データ」タブの「データの入力規則」から「データの入力規則」を選択します。 データの種類で「リスト」を選択し、元の値の窓には次の式を入力してOKします。 =INDIRECT("Sheet1!D1:AX1") A列で選択した種類の応じた品名のリストをB列に表示させるとして、B2セルから下方を選択してから、上記と同様に入力規則の操作を行い、元の値の窓には次の式を入力してOKします。 =INDIRECT(A2) これでA列で種類を選択することでB列ではその品名をプルダウンメニューに表示させることができます。
最近、似たような質問がありました。 http://okwave.jp/qa/q7417638.html ちなみに、私の回答は其処の[No.2]です。