• 締切済み

ランダムに入力された一覧表の項目・金額⇒別シートの項目別一覧表の金額欄に表示させたい

あるシートに会員毎に項目別(15程度)金額の一覧表があります これを、会員別の金額一覧表に表示させたいのです 以下具体例です シート1(会員名別金額一覧表) 会員名 項目 金額 項目 金額 項目 金額 会員1 項目A 5000       項目C 3000 会員2 項目A 5000 項目C 6000 会員3 項目A 10000       項目B 5000 会員4              項目F 4000 各会員の項目名がどの項目列に入力されるか確定していません      ↓↓ シート2(会員別金額合計表)   会員1    会員2 項目A 5000 項目A 5000 項目B    項目B 項目C 3000 項目C 6000 項目D    項目D 項目E    項目E  項目F    項目F   会員3    会員4 項目A 10000 項目A  項目B 5000 項目B  項目C    項目C 項目D    項目D 項目E    項目E 項目F    項目F 4000 項目数は15程度です 関数で対応できるのではと思うのですが、 エクセル初心者でどの関数を使用すればいいかわかりません よろしくお願いいたします。

みんなの回答

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.4

わかりずらくて、すみません。 色分けできたらもっと楽なんですけど^^; まず0固定とはその位置の数字が"0"を入力してくださいという意味で書きました。 シート1 ___A___B___C___D___E___F __会員名_項目名_金額__項目名_金額____ 2__会員A_項目A__500_項目C__800 3__会員B_項目B__700_項目F__600 ~~~~~~~と入力 シート2 ___A___B___C___D___E___F 1_会員1_________会員2_______ 2_項目A_式1______項目A_式3 3_項目B_式2______項目B_式4 4_項目C 5_項目D ~~~~~~~~~と入力した場合で話しますね。 まず式1には =if(isna(match(A2,Sheet1!2:2,0)=0),"",indirect(address(2,match(A2,Sheet1!2:2,0)+1,,,"sheet1"))) と入力 式2には =if(isna(match(A3,Sheet1!2:2,0)=0),"",indirect(address(2,match(A3,Sheet1!2:2,0)+1,,,"sheet1"))) 式3には =if(isna(match(D2,Sheet1!3:3,0)=0),"",indirect(address(3,match(D2,Sheet1!3:3,0)+1,,,"sheet1"))) 式4には =if(isna(match(D3,Sheet1!3:3,0)=0),"",indirect(address(3,match(D3,Sheet1!3:3,0)+1,,,"sheet1"))) と入力します。 式の相対関係を見ていただくと式の意味も見えてくると思います。

kaihi
質問者

補足

azzu0707さま 連絡が遅くなり誠に申し訳ありません。 実際の表に関数を入力してみたのですが、エラーになってしまいます。 自分でもいろいろと関数の用例などを見たり考えてみたのですが、エラーの修正点がわかりませんでした。 本当に初歩的なことと思うのですが。。(+_+) 出来れば、再度ご教示いただけたらと思います。 実際のシートのに入力した内容で載せます。 =if(isna(match(A7,sheet1!3:3,0)=0),"",indirect(address(3,match(A7,sheet1!3:3,0)+1,,,sheet1!))) 上記で入力すると『入力した数式は正しくありません』となり、×でメッセジーを閉じると INDIRECT関数の(参照文字列)が太字で表示されます。 どうかよろしくお願い致します。

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.3

No2です。 すみません、大嘘付きました。 Countifでは無理でした。 =if(isna(match(A4,Sheet1!2:2,0)=0),"",indirect(address(2,match(A4,Sheet1!2:2,0)+1,,,"sheet1"))) にて対応してください ご説明 表で言うシート2の項目Aの5000の数値のセルに入れてください。 =if(isna(match(シート2の項目Aのセル,シート1の会員1の行No,0固定)=0固定,"",indirect(address(シート1の会員1の行No,match(シート2の項目Aのセル,シート1の会員1の行No,0固定)+1固定,,,"シート1の名称"))) 大変失礼いたしました。 上記で不明がありましたら又お聞きください。

kaihi
質問者

補足

azzu0707 さま 本業が忙しく、教えていただいた関数を入れてみることが遅くなりました。 上記関数で入力してみると、『入力した数式は正しくありません』と出ます。 =if(isna(match(シート2の項目Aのセル,シート1の会員1の行No,0固定)=0固定 ,"",indirect(address(シート1の会員1の行No,match(シート2の項目Aのセル,シート1の会員1の行No,0固定)+1固定,,,"シート1の名称"))) ↑↑  矢印の位置("")にエラーが出て完了できません。 『入力した数式は正しくありません』となります。 ISNA(テストの対象)の位置で止まってしまうようなのですが。 あと上記式中の『0固定』とはどういう意味でしょうか? 式中の『会員1の行No』の固定ということですか? 出来れば式の意味も教えていただけたらうれしいです。 本当に初心者な質問で恥ずかしいのですが、よろしくお願いいたします。

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.2

入力される項目名が先に決まっているのであれば CountIfという関数が使えます。 決まっていないと、マクロが必要かもしれません。

kaihi
質問者

補足

azzu0707 さま ありがとうございます。項目名は決まっています。 Countif関数に当てはめてみましたが、項目名を個数で返してきます。 ワタシの式の組み方が違うのでしょうか。 シート1に項目名と金額を入力したら シート2の金額欄に表示させたいのですが。。 シート2には会員名、項目名を入力し金額欄だけ空欄です。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>関数で対応できるのではと 基本的には横のものを縦に並べるってことですか。 質問のシート2の会員ごとに列を分けるのですよね。2列づつに、質問では表現されているが、それは実際どうなんですか。256列しかないから、横に流すと、256人(会員)までしか入らないが。 シート2で会員ごとに、項目A・・項目第15の定数列が要るのですか。 決して初心者ができるようなものではないと思うし、理解でも難しい と思う。 VBA向きの問題と思うが、その実行方法など、そちらは判らないのでしょうね。

kaihi
質問者

お礼

imogasi さま ありがとうございました。 投稿したとき焦っていたので、自分のやりたいことが伝わっていませんでした。 読み返して投稿したつもりでしたが、失礼いたしました。

kaihi
質問者

補足

すみません、はずしていて遅くなりました。 imogasiさん ありがとうございます。 シート2ですが実際も会員2名ずつ下に向かって並べています。 ですので列は大丈夫です 項目は会員ごとに15列(15項目)作っています。 実は会員ごとの会費一覧表なのです。 A4用紙に印刷するよう会員を2名ずつ並べました。 出来れば、各個人が全項目のなかのどの会費がいくらとわかるように 作れたらいいなという軽い気持ちでの配置です。 VBAは経験がないので、関数でと思ったのですが、難しいでしょうか?