[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数式を教えて下さい』(vivi)
Sheet1(データベース)
A B C D
1 番号 種類 サイズ 個数
2 111 トマト M 3
3 キャベツ M 4
4 レタス S 1
5 222 人参 L 5
6 キャベツ L 6
7 レタス S 2
8 ゴボウ M 1
Sheet2(表紙になる用紙)
A B C D
1 番号 111
2 種類 サイズ 個数
3 トマト M 3
4 キャベツ M 4
5 レタス S 1
Sheet1にデータベースを作成し、Sheet2を表紙として資料を作りたいと思っています。
Sheet2の形式と数式をいちいち変更する必要を無くし、B1に番号を入力するだけで
全てのデータを持ってきたいのです。
「222」をいれたら、「人参」「キャベツ」「レタス」「ゴボウ」の
データを持っていきたいのです。
何か良い数式があったら教えて下さい。
宜しくお願い致します。
>何か良い数式があったら教えて下さい。 よい数式化どうかはわかりませんが、、、 Sheet1 の A列 には、番号を全て記入しておいてください。 Sheet1 [A] [B] [C] [D] [1] 番号 種類 サイズ 個数 [2] 111 トマト M 3 [3] 111 キャベツ M 4 [4] 111 レタス S 1 [5] 222 人参 L 5 [6] 222 キャベツ L 6 [7] 222 レタス S 2 [8] 222 ゴボウ M 1 Sheet2 [A] [B] [C] [1] 番号 111 [2] 種類 サイズ 個数 [3] トマト M 3 [4] キャベツ M 4 [5] レタス S 1 A3 =IF(COUNTIF(Sheet1!$A$2:$A$100,$B$1)<ROW(A1),"",INDEX(Sheet1!$B$2:$D$100,ROW(A1),COLUMN(A1))) 必要範囲までコピー ※範囲は適当です。 (キリキ)(〃⌒o⌒)b
早速やってみたら出来ました!ちなみに応用編でまた教えて頂きたいのですが。。。
Sheet1のB列とC列の間に別データを4行位挿入し、
データを入力した後同じ数式を使用できるのでしょうか?
ちなみに挿入した後でもSheet2に持っていきたいデータは、「サイズ」と「個数」です。
間に表紙には持っていきたくないデータが入っている場合はまた別の数式になりますか?
お願いします。 vivi
ちょっと待ってください! 根本的に間違ってました・・・ もう一度考えます。。。 (キリキ)(〃⌒o⌒)b
ぜひ挑戦したいです!!
しかし、なにぶん初心者なもので関数の意味も良くわかっていません。
日本語で「何をどうすればこうなって、、こうしたいんだよな。。。」と考えてはいるのですが、
関数になってしまうとまず関数の意味からの理解ですよね。難しいです。。。
ご指導お願いします<(_ _)> vivi
まず最初に、よく考えずに間違った数式を提示して申し訳ないですmm 上記の条件を加味した数式がこちらになります。 Sheet2 A3 =IF(COUNTIF(Sheet1!$A$2:$A$100,$B$1)<ROW(A1),"",INDEX(Sheet1!$A$2:$H$100,MATCH($B$1,Sheet1!$A$2:$A$100,)+ROW(A1)-1,MATCH(A$2,Sheet1!$A$1:$H$1,))) 長い式になってしまいましたが、分解して考えて見ましょうb 最初に出てくる関数が、IF関数です。 IF関数は、ご存知かと思いますが、理論式に対しての「真」「偽」を返します。 COUNTIF関数で、Sheet2の「番号」がいくつあるのかを出し、その値と現在の行数(ROW関数)を比べ 「番号」の個数より少ない場合は「真」の「""」(空欄)へ 「番号」の個数より多い場合は「偽」の計算へ となります。 では、「偽」の計算はどういったことを行っているかというと、 INDEX(Sheet1!$A$2:$H$100,MATCH($B$1,Sheet1!$A$2:$A$100,)+ROW(A1)-1,MATCH(A$2,Sheet1!$A$1:$H$1,)) ~~~~~~ INDEX関数で、Sheet1の範囲を設定し、その中の「○行目」の「○列目」を返しているわけです。 「○行目」で行っている関数は MATCH($B$1,Sheet1!$A$2:$A$100,)+ROW(A1)-1 ~~~~~~ MATCH関数です。 MATCH関数は、範囲内の何処にマッチしているかを調べています。 Sheet2 の 番号(B1)と同じものが Sheet1 の A2〜A100(範囲は適当に多くしてあります)の中の何番目にあるかを返します。 +ROW(A1)-1 この部分は、「調整値」になっています。 1番目に抽出するものは、ROW(A1)-1 → 1-1=0 2番目に抽出するものは、ROW(A2)-1 → 2-1=1 といった様に、MATCH関数で返す数字を調整しています。 「○列目」で行っている関数も、MATCH関数です。 こちらの方がわかりやすいと思います。 MATCH(A$2,Sheet1!$A$1:$H$1,) Sheet2 のタイトル部分と同じものが、Sheet1 の 何列目にあるのかを返しています。 難しく見えますが、INDEX関数での(多めに設定してある)範囲内の(上から)「○行目」の(左から)「○列目」を返すような仕組み(計算)になっています。 当初の計算式は、「○行目」の部分が、ROW関数のみのため間違った式でした。 大変申し訳ありません。 しばらく席を外してしまいますが、質問等があったら気軽に書き込んでください。 また、覗きに来てみますb そうそう >関数になってしまうとまず関数の意味からの理解ですよね。難しいです。。。 最初は誰でも難しいと思います。 でも、エクセル君には、ヘルプという先生がついていますので、ジャンジャン聞いて調べてみてください。 関数の上にカーソルを置き、【F1】を押すと、すぐにその場所のヘルプにたどり着けますよ^^ (キリキ)(〃⌒o⌒)b
(キリキ)さん
本当にご丁寧に教えて下さりありがとうございました。 本当にわかりやすくて嬉しかったです☆
( キリキ)さんがして下さったような説明があると1つずつ内容を確認して 数式を組み立てていくことが出来ます。 お陰さまで無事に思い通りの形に表を作成する事が出来ました(*^_^*)
また何かありましたら宜しくお願い致します。 本当にありがとうございました!!!
vivi
よかった^^ 最初に、間違った数式を提示してしまったので(深く考えなかった自分が悪いのですがw) 心配していたのですよb ここは学校ですから、これからも一緒に勉強していきましょうね♪ (キリキ)(〃⌒o⌒)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.