- 締切済み
エクセルの計算式
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#4です。 今までの質問者だと、補足要求をしても、補足をくれた人は非常に少ないので、 今回は押し掛け的に、仕様も#4の線で、こちらで推測しやってみた。 しかし最近エクセルをやり始めた人が、できるほどやさしい問題ではないと思う。 (この下記の式を自分の課題の場合に微修正することもできないかもしれない。) 色んな人も見ていたり、将来にも、類似課題で、このコーナーのこの質問を(WEBで)見るかもしれないので、あえて記す。 ーー 元データ 1日1枚のシート。4月1日から4月3日まで1枚ずつ。4日以後は省略。 担当者は3名。山田、佐藤、木村とする。 データ例は 4月1日(4月1日分ということで、シート名とする) A1:D2 4月1日 山田 佐藤 木村 以右列略 (A1の4月1日は文字列) (注意)数字文字列は半角か全角どちらかに統一すること。 データ 22 33 35 4月2日(シート名) A1:D2 4月2日 佐藤 木村 山田 以右列略 (A1の4月2日は文字列) データ 16 25 35 4月3日(シート名) A1:D2 4月3日 木村 山田 佐藤 以右列略 (A1の4月3日は文字列) データ 27 17 29 ーー 質問に基づいて、山田、佐藤、木村の列が日によって違う、設例にした。 == 上記3シートのほかに、山田、佐藤、木村のシートを作る。 まず佐藤にシートにおいて、 A列A1:A5に下記データを作る。 山田 データ 4月1日 4月2日 4月3日 4月4日 ・・ 以下略。4月1日をA2にいれて、右下ハンドルを出して下に引っ張れば連続した日が入る。 データは「見出し」のつもり。ただ休日は省くとなると注意必要。 (注意)4月1日などは文字列とする。シート名と一致させること。日付シリアル値を使わない。 ーー 同じく佐藤のシート、木村のシートを作る。すなわち、担当者分だけ作る。 === (関数式の設定) 山田シートのB2に =INDEX(INDIRECT("'"&A2&"'!B1:J10"),2,MATCH($A$1,INDIRECT("'"&A2&"'!B1:J1"),0)) その式をB4まで複写。 山田シートの結果 A1:B4 山田 データ 4月1日 22 4月2日 35 4月3日 17 同じく佐藤のシートのB2に =INDEX(INDIRECT("'"&A2&"'!B1:J10"),2,MATCH($A$1,INDIRECT("'"&A2&"'!B1:J1"),0))と式を入れる。 山田のシートのB2の式と同じ式である。式を複写できるということ。 その式をB4まで複写 結果 佐藤 データ ここの「データ」は、質問では「重量」? 4月1日 33 ↓式の複写 4月2日 16 4月3日 29 木村シートも同じなので説明の記述略。 結果 木村 4月1日 35 ↓式の複写 4月2日 25 4月3日 27 担当者名とシート名とを相対化した(式の中に、具体的なシート名や担当者名は出てこないことに注意) このために INDIRECT関数を使わざるを得ない。 ここではINDEX,INDIRECT,MATCHの3つの関数の組み合わせを使っている。 質問例に出てくる「単価」については、説明略。この回答のデータ例に出してないが、式の1か所だけ変えれば出せる程度のもの。
- imogasi
- ベストアンサー率27% (4737/17069)
質問にあいまいな点がある。エクセルの経験が少ないとそうなる場合が多い。 小生だったら、質問文を以下のように書く。 間違った点があれば、よければ補足してください(今までの経験では、質問者は補足しないが)。 回答者は通り過ぎた可能性も多いので、質問しなおすのも手だと思う。 ーー (元(素)データ作成の実情) (1)1日1シートを作成。日にちごとに別シートに作成。 (2)各日のシートの第1行目に、担当者は、第1行目の各列に入力される。 すなわち複数担当者のデータが1シートに混じった表。 (3)ただし日によってある担当者の入力される列はバラバラに変わる。 だから、素データで1月につき31枚以下のシート数になるということらしい。 次月データは、シート的には、どうなるの? (出力希望) (1)担当者ごとに出力シートを分けたい。(すると、担当者数のシートが必要ということになる)(この希望もわかるが、シート数を使い過ぎだと思うが。) (2)Aさんのシートで、たとえばA列にその月内の日付を作る。 (第I行目を見出しとして)4月1日分が第2行、4月2日分が第3行、・・)となる。 日付がないとデータのあるシートが特定できない。 そのB列に、元データの30・31枚のシートからAさんの列のデータ(数量、単価?)を取ってきて、日付順に順次行的に下方向に並べて行きたい。 元(素)データの日付は、どこのセルにあるの?か質問に書いてない。 (1)毎日の素データシートの第1行目で、エクセル関数で、Aさんを見つけるのはそうむつかしくない。MATH関数など。 (2)しかしエクセルシートの4月1分や4月2日分を見つけるのは、エクセル関数では簡単でない。 どういうシート(タブ)名の命名方法を取るかによるが。 ーー 上記の小生の質問の言い直し解説に間違いはあるか? 間違いがあれば、その点を、できれば補足してみてください。 ーー 小生は、たまたまVBAを使えるので、何とかなりそうだが、質問者には、VBAはお呼びでないだろうと思う。 するとエクセル関数の利用しかないが、行と列もはっきりしない程度の力の質問者に、エクセル関数を使って、本課題をやるのは、無理だろうとおもう。 関数で、複数!の該当データを抜出して1シートに一覧に出すのは、そもそもむつかしいのだ。 (Googleで「エクセル関数 抜出(または抽出)」で照会すれば、どうむつかしいのかわかる。 ーー もし小生の大きな誤解なら、本件記述は無視してください。回答も3件出ているので誤解しているのかもしれない。私にすれば3件の回答が簡単なのが不思議。 ー== 全般のアドバイスとして (1)関数を使うレベルなら、シートはなるべく増やさない。 (2)データの入力構想(シートのどの列とどの行にデータを入れるか)は、後日アウトプットしたい結果も勘案して、計画し決めるべきなのだ。まずシートにデータを適当に作って、あとから抜出やデータの並べを考えるというのは、課題をむつかしく、または不可能にするのだ。
お礼
いろいろと、ご意見ご回答ありがとうございます。 最後のアドバイスで、シートは増やさないのところで まさにそうしたいのですが、 その方法がわかりません。 例えば、せめて1か月ごとにシートをわけるなど。 初心者には、レベルが高かったですね。。すみません。 本当にありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
- shintaro-2
- ベストアンサー率36% (2266/6245)
こんなところを参考にしてください。
お礼
ありがとうございます。 夜、じっくり挑戦してみたいと思います。
- aokii
- ベストアンサー率23% (5210/22062)
HLOOKUP関数を使ってみてください。
お礼
夜、じっくり挑戦します。 ありがとうございました。
補足
早速ありがとうございます。 初心者のもので・・・ 行番号とはどこのことをさすのでしょうか?
お礼
大変、ご丁寧に説明頂いてありがとう ございます。 なんとか、やってみます。 ありがとうございます☆