• ベストアンサー

エクセルのアイディアをください。

エクセルで、 sheet2,3,4,5・・・・・・に入れたデータを sheet1に一覧表にして反映させたいと思っています。 ひとつのシートに1つずつのデータしかいれなければ sheet1の一覧表はきれいに出来上がるのですが、(=Sheet2!A2の様にして)1つのシートに1つのデータを入れたり、2つのデータを入れる場合(シートによってデータの数が違う場合)どうしたらいいのかわかりません。 わかりにくいので例を・・・・・・・。 ex. sheet2にりんご1個の仕入れデータを入力。   sheet3に桃2個と、バナナ1本のデータを入力   sheet4にオレンジ1個、苺3粒、キウイ1個・・             ・             ・             ・ この様なデータをsheet1で一覧表の様にしたいのですが、どのようにしたらいいのかわかりません。 アドバイス下さい。

  • toile
  • お礼率90% (36/40)

質問者が選んだベストアンサー

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

#3です。 #3の疑問はありますが、独断で推定しました。 回答時点では見とおしが立たなかったので、関数では不可能と書きましたが、何とかひねりだしました。しかし今までの回答の中で、難問の1つと思いました。理解していただけるかどうか、質問者の場合に合わせて、式をチューニングしてもらえるかどうか。 (データ例) (Sheet2)A1:A5 23 12 34 55 12 (Sheet3)A1:A7 bb 2 3 4 aa 4 5 (Sheet4)A1:A s d fg rr (Sheet5)A1 xxx (関数式1)Sheet1の目立たない列に (今回は例ですので目立つC列にします) C1に1をいれます。 C2に=C1+COUNTA(INDIRECT("Sheet"&ROW(A2)&"!$A$1:$A$30")) をいれて、シート数だけ式を下方向に複写します。 (結果) 1 6 13 17 18 となります。データ行数のSheet2からの累積行数+1です。 (関数式2)Sheet1のA1に関数式 =INDEX(INDIRECT("sheet"&MATCH(ROW(),$C$1:$C$5,1)+1&"!$a$1:$A$30"),ROW()-INDIRECT("c"&MATCH(ROW(),$C$1:$C$5,1))+1,1) をいれて、下方向にC列の最下行(シート数+1の行)の 数字-1(この場合18-1=17)まで複写します。 (結果)A1:A17 23 12 34 55 12 bb 2 3 4 aa 4 (以下略) Sheet2以下の列数が2列以上である時は、 邪魔にならないように、C列をZ列とか右の方に設定し、 関数式2の最後の,1の部分を2(B列)、3(C列)、・・・ に修正してください。上例はA列用で1になってます。 また$A$30を$B$30や$c$30に修正必要です。 各シートは30行までとなってます。各シートの最下行数が30行を越える場合は修正が必要です。 $A$30の30の部分です。 シート数が増える場合は$c$5を、5枚の場合は$C$6とか修正必要です。 またA列の式複写を下に引っ張りすぎる(むしろシートのデータ行数が今後増えることを考えて、余分行に式を設定しておかないといけないのですが)と、#REFが出ます。この防止策(=IFを使う)が必要ですが、長くなるので略。

toile
質問者

お礼

引き続きありがとうございました! 関数試してみたのですが、 シートを100~200くらい使ってるせいか データが重くなりすぎて、失敗しました・・・・・・。VBAの勉強します。 また壁にぶつかると思いますが、よろしくお願いいたします。

その他の回答 (3)

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

>2つのデータを入れる場合 Sheet2に2つのデータをいれるとは、データを入れた行が2行になると言うことですか? そしてそのデータ数従って行数は可変だということですね。 Sheetをまたがる処理なので、VBAでやらないと出来ないと思いますが宜しいですか。 VBAを習い始めなら、上記「可変」であるところの、そのシートの最下行ないし行数を捉えることが判り難いかもしれません。 これが出きれば、シート1にコピーしてくればよい。 あと索引しやすいようにソートする。

toile
質問者

お礼

回答ありがとうございました! VBAというものの存在を初めてしりました・・・・・・。本屋で初心者のテキスト買ったので勉強してみます! ありがとうございました!

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.2

こんばんは sheet1が必ず一番左に有るとして マクロを組むと こうなるかなぁ ツール -> マクロ -> VisualBasicEditor 挿入->標準モジュール として 下記をコピーペースト Sub aaa() For ii = 2 To Worksheets.Count Worksheets(ii).Activate Rows(Worksheets(ii).UsedRange.Row & ":" & _ Worksheets(ii).UsedRange.Row + Worksheets(ii).UsedRange.Rows.Count - 1).Select Selection.Copy Worksheets(1).Activate Rows(Worksheets(1).UsedRange.Rows.Count + 1).Select Selection.Insert Shift:=xlDown Next End Sub ツール -> マクロ -> マクロで aaaを選んで実行です

toile
質問者

お礼

ご回答ありがとうございます! 難しいですね・・・・・・・。 マクロの勉強をすることにしました。 エクセルの関数だけじゃやっぱ限界があるんですかね。また困った際は、よろしくお願いします!

noname#10657
noname#10657
回答No.1

マクロを組みます。 sheet2で発生するであろう最大行分をsheet1の先頭行に貼り付けます。 shhet3で発生するであろう災害行分をsheet1の続きに貼り付けます。以下同様。 そのあと、sheet1をソートさせます。 これで、sheet1には、sheet2以降の行が連続で集まります。 という動作を一度行いますが、その時マクロの開始を行い、マクロを生成させます。それで、マクロが作成できます。解り辛ければ、質問を・・・

toile
質問者

お礼

回答ありがとうございました! マクロですか・・・・・・・・・。 マクロの勉強してから挑戦してみます。 ありがとうございました!

関連するQ&A

  • エクセルのVBAについて

    エクセルのVBAに関することです。 例えば、50個のリストがあり、そこからランダムに10個選び出す。そのランダムに選び出す手順を10回繰り返す。ランダムに選んだ10セットをシートに書き出すやり方を教えてください。よろしくお願いします。 リスト        結果            1セット    2セット    3セット   ・・・・・・・ 10セット りんご       みかん     りんご    梨             キウイ   みかん       梨       バナナ    パイナップル      みかん 梨          いちご    みかん    キウイ          バナナ バナナ        :        :        :             : パイナップル       キウイ いちご ・ ・ ・ のような感じです。

  • ★エクセル関数に詳しい方、よろしくお願いします

    ★エクセル関数に詳しい方、よろしくお願いします はじめまして質問を利用させていただきます。 エクセル関数に詳しい方、どうか教えてください。 いつもこの質問コーナーをヒントに↓の関数を作成して、シート1の★c列に 値を抽出することができました。 <シート1>の★c列に関数を入れて、a列、b列の一致したデータを<シート2>から抽出 =INDEX(シート1!c$2:c$10,MATCH(2,MMULT((シート2$a2:F$a10=a2:b2)*1,{1;1}),))    <シート1>           <シート2 データ> a列  b列   ★c列      a列  b列    c列 101  キウイ  北海道    101  キウイ  北海道 201  キウイ  沖縄県    101  ばなな  北海道 101  ばなな  北海道    101  オレンジ 北海道 201  ばなな  沖縄県    101  いちご   北海道 101  オレンジ 北海道    101  メロン   北海道 201  オレンジ 沖縄県    201  キウイ   沖縄県 101  いちご  北海道     201  ばなな  沖縄県 201  いちご   沖縄県    201  オレンジ 沖縄県 101  メロン   北海道     201  いちご  沖縄県 201  メロン   沖縄県     201  メロン   沖縄県 **********************************************  この下からが質問内容になりますm(_ _)m ********************************************** しかし、表が少し複雑になってしまい、 上で作成した関数が使えなくなってしましました。 ●<シート2>のb列の文字が複雑になってしまった場合、 <シート1>の★c列に、うまくデータを抽出することはできますでしょうか? <シート1>          <シート2 データ> a列  b列   ★c列    a列   b列     c列 101  キウイ  #N/A    101  甘いキウイ 北海道 201  キウイ  #N/A    101  甘いばなな 北海道 101  ばなな  #N/A    101  オレンジ   北海道 201  ばなな  #N/A    101  いちご小   北海道 101  オレンジ #N/A    101  メロン小   北海道 201  オレンジ #N/A    201  黄色キウイ 沖縄県 101  いちご   #N/A    201  ばなな小  沖縄県 201  いちご   #N/A    201  オレンジ大 沖縄県 101  メロン   #N/A    201  いちご大  沖縄県 201  メロン   #N/A    201  メロン大   沖縄県 もし、ご存知の方がいらっしゃいましたら、どうかご教示願います。 どうかよろしくお願いいたします。

  • エクセル2003で、重複しないデータのみを別シートに抽出する方法が知り

    エクセル2003で、重複しないデータのみを別シートに抽出する方法が知りたいのですが、過去の質問内容を拝見しても全く同じ状況が見つからず、エクセルが苦手で応用のきかない私では解決できなかったので、こちらで質問させて頂きます。 まずシート1にデータが縦に並んでいます。 りんご みかん いちご シート2には、シート1のデータに新たなデータが加わった上、ランダムに並んでいます。 りんご オレンジ キーウィ みかん アボカド いちご 知りたいことは、シート1とシート2のデータを比べ、シート2のデータのうち、新たに加わったものだけをシート3に抽出する方法です。 オレンジ キーウィ アボカド ちなみに実際のデータは数字とアルファベットの混合で10桁くらいあり、前方の3桁が一致のものが大半を占めます。 エクセルにお詳しい方、ご教示頂けると幸いです。 どうぞよろしくお願い致します。

  • エクセル いろいろな品名ごとに条件付きのカウントをしたい。

    エクセルマクロについて教えてください。 以下の「元の表」から「抽出した表」のように、○がついているもののカウントをしたいのですが、マクロでやるにはどのようにしたらよいでしょうか。 品名は特定なものではなく、無限にあります。 〔元の表〕 品名 区分 りんご ○ りんご × みかん ○ バナナ ○ バナナ × キウイ ○ りんご × キウイ ○ りんご ○   :   : 〔抽出した表〕 品名  区分 数量 りんご ○ 2 みかん ○ 1 バナナ ○ 1 キウイ ○ 2   :   :

  • エクセルについて

    宜しくお願いします。 エクセル2003について質問をしたいので宜しくお願いします。現在VLOOKUP関数について勉強をしています。予め読み込みたいデータを作成し、(リンゴ、メロン、ミカン、イチゴ、バナナ)その右側に入力されているデータを自動的に読み込むというものだと思いますが、入力するリンゴ、メロン、ミカン、イチゴ、バナナを手入力するのではなく、入力するセルをクリックする事により、セルの右下に三角のようなマークが出てきてそれをクリックするとリンゴ、メロン、ミカン、イチゴ、バナナが縦に出てきて、該当の項目をクリックする事により入力することは出来ませんでしょうか? どなた様かご教示の程宜しくお願いします。

  • エクセルの関数(IF関数?)について教えてください

    excelの関数についてわからず、困っています。 どのような関数を入れればよいのか、ご教授お願いいたします。   sheet1に下記のような表があり、 No 項目名 日付 1 りんご 11/1 2 バナナ  3 いちご  sheet2に No 項目名 日付 7 バナナ  8 りんご  9 パイン  という表があるとします。 sheet1に日付を入力した時に(りんごの右の11/1) sheet1の項目名と一致するsheet2の項目名の右のセルに同じ日付が入るようにさせたいです。 どのような関数を入れたらよいでしょうか。   よろしくお願いいたします。  

  • エクセルで並び順について。

    A B 1 2 1りんご    2イチゴ 3 2イチゴ    3バナナ 4 3バナナ    9柿 5 4キウイ    6マンゴ 6 5なし     7びわ 7 6マンゴ 8 7びわ     5なし 9 8メロン       10 9柿 エクセル上でAの列と同じ並び方(同じ行)でBも並べたいのですが、 一番早い方法を教えてください。 ちなみに大量のデータがあるので、関数とかがあれば助かります。

  • Excelの関数について

    Excelで下記条件を満たすものを求める場合の関数を教えてください。 セル     A       B      2011/4/1    リンゴ      2011/4/25   バナナ      2011/4/26   リンゴ      2011/5/1    キウイ      2011/5/3    バナナ と入力がある表で、4月に該当する「リンゴ」という名前の数を求めたいです。 上記の場合、4月のリンゴの数は「2」になります。 COUNTIF、もしくはSUMPRODUCTを使うのでしょうか? 毎月ごとの、果物別の数を求めていきます。 以上、よろしくお願いいたします。       

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

  • vlookup関数のことになりますm(_ _)m

    エクセルのvlookupに関してですが、どうやっても表から対象の内容を 1つしかひっぱてこないので、どうやったら、入力した内容に合致した 全ての内容をひっぱてくれるのか教えてくださいませm(_ _)m 表は.... 入力するところは1つです。 入力する数値⇒【  】   参照する表は A  B 200 ばなな 200 みかん 300 りんご 300 イチゴ 300 キュウイ 500 すいか 700 めろん になります。。。(Aは重さ、Bは果物名です) 現在 結果の欄に【=VLOOKUP(入力欄,A1:B7,2,TRUE)】と式を入れているのですが、この場合、数値を"400"と入力した場合 結果欄には【キュウイ】が表示されますが、同じ数値である【イチゴ】と【りんご】を下のセルもしくは別のセルに併せて表示させるにはどのようにしたらいいのでしょうか? ※結果には入力欄に入力した値よりも低いけれども一番近い物が選ばれる様にしたいのです。例えば 入力値が260であれば【ばなな】【みかん】が、、入力値が520であれば【すいか】だけが表示されるという形で。。。 ※果物は100ぐらいありますので、200<300 という風に1個づつしてしまうのは。。チョットきついかもしれないです

専門家に質問してみよう