• 締切済み

excel index関数?changeイベント??

作者不明のため、教えていただきたいのですがお願いします。 シートが4つほどあり、index関数でデータを5つめのシートで集計しています。 集計シート例:  A  B C D E F G H ・・・ 1   【ここにドロップダウンのボックス?があります▼】 2   あ い う え ・・・ 3●● 1 1 2 2 ・・・ 4△△ 2 2 3 2 ・・・ 5□□ 1 1 1 1 ・・・ ・ ・ ●●シート例:  A  B C D E F G H ・・・ 1   あ い う え ・・・ 2AA 1 1 1 1 ・・・ 3BB 0 1 1 1 ・・・ 4CC 1 2 2 2 ・・・ あいうえ項目が各シートにあり、集計シートでドロップダウンリスト(リストの下のセルB1には数字の割り当てがあります)からAAを選ぶと各シートからデータを引っ張ってきて(index関数がB1の数字を読み取ります)、各シートのデータが集計されます。 BBやCCと選んでも簡単に集計してくれるので重宝していたのですが、 これを応用しようと新規ブックで似たものを作り、 index関数(例:=IF((INDEX(●●!$B$2:$H$10,$B$1,1))="","*",INDEX(●●!$B$2:$H$10,$B$1,1))) ※列番号も右セル(あ→い→う・・・)にいくごとに増えていきます。 もコピーしましたが「#REF!」となって集計してくれません。 元のブックを開いてドロップリストを右クリック→マクロの登録をみるとマクロ「ドロップ1_change」という登録が見えますが、マクロを調べても表示は Sub ドロップ1_Change() End Sub しかでてきません。 なにも入っていないのになぜ動くのでしょうか? また他のブックではなぜ「#REF!」となるのでしょうか。 質問もどうしていいかわからないためわかりにくいかと思いますが、教えてください。この説明で不足している場合はご連絡下さい<(_ _;)>

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 私の使ったマクロではダメでしたか? というか、分らなかったのかもしれませんね。関数を使わない分だけ、私には楽で易しいと思います。 >楽に集計して、選択しなおしても一括で見れるようにする関数や方法 たぶん、そういうお話なら、今の路線を直していくのがもっとも早いのではないか、と思います。易・難の区別は、このレベルではつけられません。 おそらく、 =IF((INDEX(●●!$B$2:$H$10,$B$1,1))="","*",INDEX(●●!$B$2:$H$10,$B$1,1)))       ↑      ●●に現在のブックの正しいシート名を入れる、それが唯一の解決策だと思います。Sheet1 となっていたら、Sheet1 と入れるわけです。

hatis
質問者

お礼

変身が遅くなり申し訳ありませんでした。 教えていただいたマクロをさわってみたり、いろいろやってはみましたが、自力では無理と判明。 もうすこし自分の力に見合った方法を探してみようと思います。 ご協力、本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 ご質問のご説明では、私には分りません。 たぶん、ドロップダウンリストではなくて、フォームツールの・コンボボックスだと思いますが、一番大事なことは、どういう状態から、「何をしたいのか」ということです。 他人の作ったものは、しょせん、他人のものでしかないのです。だから、複製を作るのはは諦めて、新しく作るつもりのほうがよいです。(というよりも、自分で作ったものでも、同じことです。。半年経ったものなどは、新たに作ったほうが、だいたいは良いものが出来ます。) ---------------------------------- >=IF((INDEX(●●!$B$2:$H$10,$B$1,1))="","*",INDEX(●●!$B$2:$H$10,$B$1,1))) おそらくコンボボックスのプロパティのコントロール-リンクするセルは 「$B$1」 で、入力範囲は、どこかに、項目名があって、そのリストの数は、1から9までのはずです。 >「#REF!」となって集計してくれません。 理由はわかりません。何が違っているかは、ご自身で探しだしてください。おそらく、集計シートの「B1」に、範囲以上の数字(例:10)が入っているか、シート名が違っているか、範囲が違っているか、のどれかです。 >Sub ドロップ1_Change() >End Sub が、空なのは、本人は作れなかったからだと思います。マクロが作れたのなら、Index関数は必要がありません。コンボボックスで、1~9までが出るようにする、という条件で、リンクするセルは、上記で書いたように、「B1」という条件です。(ただし、以下の場合は、出力は、シートの並んでいる順に出てきます。) Sub ドロップ1_Change() ' Dim i As Long Dim j As Long j = Range("B1").Value - 1 For i = 1 To 4 'シートは4枚。 With Worksheets(i)  '各シートは、B列からH列までで。  .Range("B2").Offset(j).Resize(, 7).Copy Range("B3").Offset(i - 1) End With Next ' End Sub 中身を抜き出してお使いください。

hatis
質問者

補足

回答、ありがとうございます。 したいことについてですが、 集計時に、AAやBBなどの項目をコンボボックスでもなんでもいいのですが、 選択するたびに各シートからデータを引っ張ってきて、各シートのAAやBBの項目を●●、△△別に見たい、というものです。 別ブックで同じ状況にしても出来なかったというのは、コンボボックスでAAからBBに選択しなおすと「#REF!」になってしまうのです。 もっと楽に集計して、選択しなおしても一括で見れるようにする関数や方法があるのでしたらご教授いただきたいのですが。。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelのマクロを作ってもらえますか?

    こんにちは。 エクセルのマクロで、Sheet1に転々と 入力されているデータを すべてA1の列へ統一して並べ替え(2) 同じデータの数を計算してB2へ記述する(3)などという マクロができるなら作っていただけないでしょうか? もし、数の入った行のみ残して削除までできれば最良なの ですが(4) (2) AA-20 AA-20 AA-20 BB-30 CC-30 CC-30 CC-30 (3) AA-20   3 AA-20 AA-20 BB-30   1 CC-30   3 CC-30 CC-30 (4) AA-20   3 BB-30   1 CC-30   3 このようになのですが、 お時間のあるときで結構ですので宜しくお願いします。

  • Excel VBAで1週間毎にカテゴリーでまとめる方法

    Excelで以下のような集計データがあります。1週間毎にカテゴリーでまとめたいのですが、マクロで集計できないでしょうか? aa bb cc dd 9/27 0 2 0 4 9/28 4 52 41 1 9/29 6 0 1 13 9/30 2 0 1 0 10/1 1 0 1 0 10/2 0 0 3 0 10/3 0 5 1 0 10/4 2 1 0 0 10/5 3 61 1 11 10/6 0 1 31 3 10/7 6 0 1 0 10/8 0 2 1 5 10/9 8 3 31 4 10/10 0 1 1 0 10/11 3 1 1 0 10/12 5 0 5 4 <集計結果1> ※単純に週ごとに集計した結果 aa bb cc dd 1週目 13 59 48 18 2週目 19 69 66 23 3週目 8 1 6 4 <集計結果2> ※1週目からの延べ合計 aa bb cc dd 1週目 13 59 48 18 2週目 32 128 114 41 3週目 40 129 120 45 できれば、1回で集計結果2(1週目からの延べ合計)を出したいと思っていますが、集計結果1を関数で合計し、集計結果2を出したいと思っています。

  • エクセルでの複数シートの比較

    【シート1】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う え 4 aa bb cc dd 【シート2】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う こ 4 aa bbb cc dd こういった風に、基本的に同じデータ構造で作られたデータがあった時に 2つのシートで、入力されてるデータが違うかをチェックしたい時、 (ここではD3とB4のセルのデータが書き換わってる) どういった風なやり方が考えられますか? 方法としては、関数、マクロ、VBA等あると思いますが、 当方初心者に毛のはえた程度のレベルですので、 関数ぐらいしか分かりません(-_-;) ●同一ブック内にあるシートの比較 ●別ブック内にあるシートの比較   の2種類が知りたいです。 ○ここではD3とB4のセルの内容が違うということが分かればいいのです。  (D3・・・【シート1】え、【シート2】こ)←ここまで分かると必要はないです。 よろしくお願い致します。

  • Excelの関数のことです。

    Excelの関数のことです。 Excelのシートに給与金額を入力しています。 その入力用シートには 施設名(A・B・C) 職種名(AA,BB,CC,DD) 勤務形態(a.b) 合計金額 アルファベットは種類数です。 を入力しており 別シートに施設ごとに給与合計をするシートがあります。 そこに 例)A施設の常勤で事務が○人いてその給与合計が○円 という関数が組みたいのです。 教えてください。 よろしくお願いします。

  • エクセルの名前の定義について。

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (1)【sheet1】 A2:A6に『aa』、 B2:B10に『bb』、 C2:C6に『cc』という名前を付けたとします。 ちなみにそれぞれのセルには文字列が入力されています。 (名前の定義の《範囲》はブックではなく、sheet1) (2)【sheet2】 B2:D6に『aa』、 B7:D15に『bb』、 B16:D20に『cc』と、sheet1と同じ名前を付けました。 それぞれB列・C列・D列には数字が入力されています。 (名前の定義の《範囲》はブックではなく、sheet2) ちなみにA列には、sheet1に入力されている文字列と同じものが入力されています。 A2:A6にはsheet1で『aa』と名前をつけた範囲と同じ文字列。 A7:A15にはsheet1の『bb』と同じ文字列。 A16:A20には『cc』と同じ文字列です。 ここからが本題です! (3)【sheet3】 A2に何らかしら関数を入れて、【sheet1】で作った名前(aaやbbやcc)が1つ表示されるようにしたとします。 そしてB2には、A2で表示された名前の中の文字列が1つ表示されるようにします。 (例えばA2に『aa』と表示されたら、B2には◯◯) 更にC2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』の中のB列と、A列にある◯◯とが交差するセルに入力されている数字(図でいう(5))を表示させる関数を入力したいのです。(INDEXやINDIRECT、MATCH関数など…) 他に例えば、A2に『bb』(sheet1の名前)、B2に★★と表示されたら、C2には【sheet2】の名前『bb』の中のB列と、A列にある★★が交差するセルに入力されている数字を表示させたいです。 同じように、今度は、D2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』のC列と、A列にある◯◯の交差するセルに入力されている数字を表示させたいです。 長々とややこしくてすみません… 説明分かりますでしょうか?? つまりは【sheet3】のC2・D2・E2に入力する関数が知りたいです。 自分なりに関数を入力してみたのですが、A2で表示された名前がsheet1での名前なので、sheet2の情報を引き出す事が出来ません。 わざわざsheet1とsheet2でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

  • エクセル関数 送料代を出す方法

    例えば sheet1    商品一覧                 送料一覧     A     B           E      F       G       H   商品名  サイズ      都道府県  60サイズ  80サイズ  100サイズ 1  AA     80        北海道    300     500     1000 2  BB     100        名古屋    200     300     500 3  CC     60        東京      100      200     300 sheet2                            ↓     A       B     C      D       E      F   商品名  個数  金額  梱包数  送料代  都道府県 1  AA     1   ●●    1     300    名古屋 2  CC     3   ●●    3     300    東京 3  BB     6   ●●    3     3000   北海道 sheet2 の送料代の金額を出したいのですが、関数がわかりません。 商品名・個数・金額・梱包数を入力後、都道府県を入れたら送料代が入るようにしたいのですが 関数の式を教えて下さい。

  • EXCELで関数だけの集計を行いたい。

    こんにちは。 エクセル(VER97以上)の関数のみを使用して(マクロを使わず) 以下のような集計を実現したいのですが可能でしょうか? シート1 A B 1 日付 内容 2 2001.11.27 データ1 3 2001.11.27 データ2 4 2001.11.27 データ3 5 2001.12.03 データ1 6 2001.12.03 データ2 7 2001.12.03 データ3 8 2001.12.15 データ1 9 2001.12.15 データ2 10 2001.12.15 データ3 11 2001.12.15 データ4 12 2001.12.15 データ5 13 2001.12.15 データ6 シート2 1 日付 件数 2 2001.11.27 3 3 2001.12.03 3 4 2001.12.15 6 5 総合計 12 (Tab区切りデータです) シート1に入力した日付データをシート2に日付でグループ化して データ件数を集計したいのですが関数で行おうとするとかなり難し そうですが、うまい関数を使えば出来そうな気もします。 実現可能でしょうか? よろしくお願いします。

  • EXCELの関数について

    EXCELの関数について教えてください。 恐らくIFを使うと思っていますが、よくわかりません。 元の表 1 aa bb 空欄 空欄 空欄 2 空欄 cc これを空欄をうめたいです。 目的の表 1 aa bb 2 cc

  • エクセル関数

    データの加工をしています。 日次実績の重たいエクセルファイル(ブックA)を開かずに、別の集計結果用ブック(ブックB)にリンク式またはマクロ記述で、ブックB上にブックAの値を参照することは可能でしょうか。 元のブックAは、日次のため、式またはマクロの中で日付を変更しながら、次々とデータを取得したい、、と考えています。

  • ExcelでIndexとMatch関数が使いこなせない

    すみません、カテゴリを間違えてまして、再度投稿いたします。 有給管理表をExcelで作成しています。 シート1に社員のデータ表を入力してあり、 シート2には有給が発生する社員へ有給の残日数や 付与日に関するお知らせの案内状をB5サイズで作っています。 シート1のデータを拾って、シート2の案内状へ反映させる際、 付与日や残日数などはVlookupで参照できるのですが、 社員番号は退職した社員がいるため番号が飛んでいて うまくできません。 IndexやMatch関数を使えばなんとかなりそうだと思い やってみましたが、VALUE!が表示されてしまいます。 どなたかうまくいく関数を教えて頂けますでしょうか? シート1のデータ例  A列   B列   C列   D列    E列 社員番号  氏名  入社日  付与日   付与日数 100001   くま  2007/4/1  2007/10/1  10 100003   たぬき 2007/5/1  2007/11/1  10 100005   うさぎ 2007/5/10 2007/5/10  10  100010   きつね 2007/6/1  2007/12/1  10 シート2(例)ページ1    B列   C列 B1 社員番号  100001←ここに式を入れたい B2 社員氏名  くま  さん(vlookupでC1を拾ってくる) B4 あなたの有給付与日は  2007/10/1 です。付与日数は 10 日です・・・・・・。 シート2 ページ2 B30 社員番号  100003 (←ページ1の次の該当者を拾いたい) B31 社員氏名  たぬき  さん B33 あなたの有給付与日は 2007/11/1 です。 付与日数は 10 日です・・・・・・。 このような感じです。社員番号が飛んでいても下の行を拾っていくような関数はありますでしょうか?(Index、Match関数以外でも結構です)

専門家に質問してみよう