アプリ版:「スタンプのみでお礼する」機能のリリースについて

学年 グループ 名前
1  A    佐藤
1  A    鈴木
1  B    田中
1  B    伊藤
1  C    山本
1  C    高橋
2  A    中村
2  A    加藤


3  C    村山

のようなリストがあるとします。

別の空白の表を作りまして
列A 列B   列C
学年 グループ 名前
・▼ ・▼   ・▼
・・ ・・   ・・

列Aはプルダウンで学年「1~3」を選択できるように
します。同様に列Bはグループ、列Cは名前を選択できる
ようにします。
(入力規則→入力値の種類をリスト→元の値を設定
 までは自力でできます・・・)

普通に設定しますと
列Aではプルダウンから「1~3」が選択でき、
列Bではプルダウンから「A~C」が選択でき、
列Cではプルダウンから「佐藤~村山」が選択できます。

実現したいのは、列Cのプルダウンの際に絞込みを
することです。

具体的には
列Aのセルでたとえば「1」、列Bのセルで「A」を
プルダウンで選択すると、
列Cのプルダウンリストの候補に「佐藤」「鈴木」
だけが出てくるようにしたいのです。

列Aと列Cの間だけ結びつけることはなんとかできます。
(列Aで「1」を選ぶと列Cで「佐藤~高橋」に絞り込む)
が、3列パターンにすると全く動きません。。

どなたか教えてください。お願いしますっ。

A 回答 (5件)

例データ Sheet1


A1:D10
学年グループ名前役割
1A佐藤学級委員
1A鈴木図書委員
1B田中学級委員
1B伊藤図書委員
1C山本掃除監督
1C高橋学級委員
2A中村掃除監督
2A加藤顧問
3C村山図書委員
ーーーー
Sheet2
A1:C2  ->条件
学年グループ名前
3C村山
A2は入力規則 1,2,3
B2は入力規則 A,B,C
C2は名前を区切って入れるか、Sheet1の名前列指定。
ーー
VBEの標準モジュールに
Sub Macro1()

Sheets("Sheet2").Select
Sheets("Sheet1").Range("A1:D15").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:C2"), CopyToRange:=Range("A5:D16"), Unique:=False
End Sub
フィルタオプションの設定をマクロの記録をとって、一部手直しすると出来るが、詳細は長くなるので略。
Sheets("Sheet1").を入れるのがミソ。
ーー
(下記は図書館ででもエクセルマクロの解説書を読んでください)
Sheet1にフォームのボタンを1つ貼り付け。
マクロの登録で、Macro1(上記のプログラムの名前)を登録。
Googoeででも「フォーム ボタン」「マクロの登録方法」などで照会のこと。(ツールバーのコントロールツールボックスでない方。フォームを選択の方がマクロの登録がわかりやすい)
http://www11.plala.or.jp/koma_Excel/contents4/ma …
の説明03439(オートシェイプに登録)がよいかも。
ーー
操作
Sheet2の第2行の学年・グループ。名前をそれぞれドロップダウンで選択。
上述のボタンをクリック
ーー
結果
A5:D6に
学年グループ名前役割
3C村山図書委員
    • good
    • 0

おはようございます!



一例ですが↓の画像のように表を作ってみました。
Sheet1にデータがあり、Sheet2にプルダウンリスト表示させる場合です。
当方使用のExcel2003での場合になります。

尚、名前の定義の場合英数字から始まったり、同列・行に同じ名前定義のものがあると判断できなくなると思いますので
失礼ですがこちらで勝手に↓の表のように区別できるようにしてみました。

学年を第1学年~第3学年・グループをA_1~C_3 という具合に重複がないようにしています。

まず、Sheet1のK1~K3を範囲指定 → 挿入 → 名前 → 定義 → 「学年」として追加 → OK
(1行目のセルの結合部分を範囲指定して、プルダウンリストにすると、空白が含まれてしまうため)

同様にB2~D2を範囲指定 → 「第1学年」
   E2~G2を範囲指定 → 「第2学年」
   H2~J2を範囲指定 → 「第3学年」

そして、今度はグループ分けの名前定義です。
データ範囲によって範囲指定の領域は変えてください。
B2~B6を範囲指定 → 挿入 → 名前 → 「作成」 → 
名前の作成先を「上端 行」を選択してOK

同様にC2~C6を範囲指定 → F4キーを押す → D2~D6を範囲指定 →F4キー・・・
というように最後の列まで同様の操作を繰り返します。
これでSheet1の名前定義が完了しましたので、
Sheet2の
A2セルに入力規則のリストから数式欄に
=学年 としてOK
B2セルをアクティブにし、入力規則のリスト数式欄に
=INDIRECT(A2)

C2セルも同様にリストの数式欄に
=INDIRECT(B2)

以上、全て完了でリスト表示させると↓の画像のような感じになります。

要するに元データの表がきっちりできていれば
後は範囲指定し、名前定義するだけですので簡単だと思います。
今回の場合はグループ分けですので同じグループ名が各学年にあるため
少し手間取りましたが、
都道府県分けのような場合はすぐに名前定義は設定できると思います。

以上、長々と失礼しました。
参考になれば幸いです。m(__)m
「エクセルで、リストから絞込み選択できるよ」の回答画像4
    • good
    • 0

いくつか方法がありますが、


>列Aと列Cの間だけ結びつけることはなんとかできます。
>(列Aで「1」を選ぶと列Cで「佐藤~高橋」に絞り込む)
は、どのような方法で実現されていますか。
作業列と関数を使った案ですが
別シート(Sheet2)の
  A   B  C
学年 グループ 名前

と2行目に入力規則でデータを選択するとして
学年 グループ 名前 作業列1 グループリスト 作業列2 名前リスト
1  A    佐藤
1  A    鈴木
1  B    田中
1  B    伊藤
1  C    山本
1  C    高橋
2  A    中村
2  A    加藤


3  C    村山
と4列準備して
D列に =IF(A2=Sheet2!A$2,ROW(),"") 下へコピィして条件にあった場合に行番号を表示
E列に =IF(ISERROR(SMALL(D:D,ROW(A1))),"",INDEX(B:B,SMALL(D:D,ROW(A1)))) で
条件にあった名前のみ表示できます。
同様に F列に =IF(AND(A2=Sheet2!A$2,B2=Sheet2!B$2),ROW(),"")
2つの条件があった場合に行番号を表示
G列に =IF(ISERROR(SMALL(F:F,ROW(A1))),"",INDEX(C:C,SMALL(F:F,ROW(A1))))
で、両方の条件にあった名前のみ表示されますので
E列、G列に 挿入=>定義 で名前をつけて
Sheet2のB2、C2の入力規則のリストにしてみてください。
    • good
    • 0

シート1のA列で学年が、B列でグループが、C列で名前がそれぞれプルダウンのリストから選択できるようにするとします。


A列およびB列でのリストは作成できるのですがとのことですのでC列について述べます。
初めにデータベースとしてシート2を用意するとして、A1セルに学年、B1セルにグループ、C3セルに名前の文字があるとして、データは2行目から下にそれぞれ入力されているとします。
作業列を作って対応することになります。
D2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",A2&B2&(COUNTIF(D$1:D1,A2&B2&"*")+1))
E1セルには1学年のAグループを意味する1Aの文字を入力します。F1セルには1学年のBグループを意味する1Bの文字を入力します。同様に右横方向に学年グループ名を入力します。
E2セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
これで、各学年グループごとの名簿が表示されます。
もちろん初めから式を使わずにE列より右の列を作成してもよいのです。
そのように準備をしたうえでE列を選択してエクセル2007なら「数式」タブから「名前の定義」をクリックします。名前の窓には_1Aと表示されているでしょう。そのままOKします。Fの列でも同じ操作をして名前を定義します。同様に右横方向の列を選択しては名前を定義します。エクセル2003の場合でしたら「挿入」メニューから「名前」さらに「定義」と進んで名前の定義の操作を行います。
このような準備がすんでからシート1に戻ります。
シート1のC2セルから下方を選択して「データの入力規則」から進んでリストでのもとのデータには =INDIRECT("_"&A2&B2) の式を入力します。
これでA列での学年C列でのグループにマッチした名前のリストが表示され選択できるようになります。
    • good
    • 0

プルダウンするとオプションという項目があります。


オプションを指定すると抽出条件が選択できる機能があるので、そこで設定してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!