• ベストアンサー

EXCELで複数のシートからデータを別シートに出す方法

EXCELで複数のシートからデータを別シートに出す方法 EXCEL2007でデータが1シートに100行/10列ある物が10シートあります。 この10シートの任意の行にA~Dを付けて、別シート(Aシート~Dシート)に A~Dを付けた行を表示させたいのですが、方法がわかりませんでした。 ご教示お願いします。 また、可能なら別シートに表示させる時、10列ある物を4列にしたいのですが。 よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

No2 merlionXXです。 他にも疑問点は多いのですが、いちいち確認するのも面倒なので、とりあえずVBAのコードを作成してみました。 回答者はあなたの作ったデータを見ることができないのですから、本来この程度の前提条件は質問者側で最初に提示すべきことです。 以下の前提で作成していますので違ったら言ってください。 ○データのあるシート(名前はなんでもOK)10枚はそのファイルの一番左から10枚目までに並んでおり、その途中に余分なシートは入っていない。 ○100行10列のデータの範囲は10枚のシート全部が、A1~J100であり、A列には途中に空白セルがない。(B~J列にはあってもOK) ○A~Dの識別符号を入力するのは各シートのZ1~Z100の範囲である。(ここが空白やA~D以外の記入があれば、その行は転記の対象外となる) ○別シート(Aシート~Dシート)の名前は半角英字で SheetA SheetB~SheetD である。 ○SheetA SheetB~SheetD はデータのあるシートより右側(11枚目以降)にある。 ○SheetA SheetB~SheetD のA~J列に該当のデータを上から順に転記させる。 以上の前提が正しければ以下の手順をお試しください。 簡単ですよ。 1.そのBOOKを開き、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor 画面を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test01()   Dim i As Long, r As Long, y As Long, z As Long, x As String '変数宣言   For i = 1 To 10  '左の1枚目から10枚目まで     With Worksheets(i) '各シートにつき       For r = 1 To 100 '1~100行目まで         x = StrConv(Trim(.Cells(r, "Z").Value), vbNarrow) 'Z列文字を取得して半角化しxに代入         If x <> "" Then 'xが空白でなければ           If InStr("ABCD", x) > 0 Then 'xがA~Dに該当すれば             y = Sheets("Sheet" & x).Cells(Rows.Count, 1).End(xlUp).Row '転記先シートの最終行取得             z = IIf(Sheets("Sheet" & x).Cells(y, "A") = "", y, y + 1) '転記先シートの転記先の行を判断             Sheets("Sheet" & x).Cells(z, "A").Resize(, 10).Value = .Cells(r, "A").Resize(, 10).Value '転記           End If         End If       Next r '行繰り返し     End With   Next i 'シート繰り返し End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

opbaka
質問者

お礼

回答ありがとうございました。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 10シートの任意の行にA~Dを付けて ここがよくわからないのですが、データのある10のシートで、Aをつけた行はAシート、Bをつけた行はBシート~Dをつけた行はDシートへ転記するということですね? そうであれば、ご希望のことはエクセルのVBAを使えば十分できると思います。 このA~Dは、データのあるシートのどの列に入力するのですか?

opbaka
質問者

補足

回答ありがとうございます。 説明不足でした。 >ここがよくわからないのですが、・・・ということですね? ・はい、そうです。 >このA~Dは、・・・どの列に入力するのですか? ・空いている列ならどこでもいいのですが、 便宜上「Z」とさせて頂きます。 上手く説明できていませんが、よろしくおねがいします。

noname#192382
noname#192382
回答No.1

あなたがやろうとされていることは、データベース的な仕事です。エクセルのデータはアクセスに簡単に移せますから、この仕事はアクセスの世界でなさったらいかがですか。アクセスでは楽に操作ができます。

opbaka
質問者

補足

回答ありがとうございます。 エクセルでは無理でしょうか? 業務用に支給されたパソコンでアクセスは入っておらず、 フリーソフトを入れるのは許可されていないので。 アクセスなら簡単にできるとは知りませんでした。

関連するQ&A

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • 複数のシートから重複するデータを別シートに抜き出す

    こんにちは。 Excel2007です。 複数のシート(現在はSheet1からSheet4ですが、最終的にはSheet10ぐらいまでになります)に蔵書データが入っています。 A列21行目から作者名、B列21行目から本のタイトル、C列21行目からページ数と以下、値段、ISBNなどJ列まで蔵書データが入っています。本棚ごとにSheet1、Sheet2と分かれて入力されています。 この複数のシートから本のタイトルが重複するものを別シートに抜き出すにはどうしたらいいでしょうか? 重複データを削除するマクロや関数は探せたのですが、複数のシートにまたがっている場合は探しきれませんでした。 何かいい解決方法があればご教授下さい。

  • Excelでの複数データ抽出方法

    Excelで関数を使用して以下のようなデータから 複数のデータ抽出を行いたいのですが可能でしょうか? <sheet1> A列 B列 C列 D列     E列 123456 11 12 13    13 123457 12 13 14    13、14 123158 13 14 15    13,14 123159 14 15 16    14  123160 15 16 17 ※抽出するデータは「13・14」になり、抽出場所は別シートでもかまいません。 過去の質問など参照してみましたがうまく出来ませんでした。 複数の関数を組み合わせでもかまいませんので、お手数おかけしますが よい方法が有ればご教示お願いします。

  • excel 別シートから複数項目を取得

    こんばんは。エクセルについて質問があります。 今、エクセルで同じ構造で中身の違うデータベースの様なシートを数枚作り、 そこから参照して、別の入力シートにそのデータを引っ張って来るということをしたいです。 調べてみた感じVLOOKUP関数などを使うのかなと思うのですが、 どうもうまいこといきません。 DBのような扱いをしているデータシートの構造は 【データシート】 A1(クラス名)列| B1(番号) 列 | C1(名前:漢字) 列 | D1(名前:かな) 列 | ------------------------------------------------------------------- A2   1-1 |  B2 1番 | C2 鈴木 太郎   | D2 すずき たろう   | のようなデータの入れ方をしており、クラスは1-7まである感じで、 B1の列はA1列のクラスの人数分が連番になっています。 なので、番号は重複してる部分が多いです。 これが複数枚シートあるといった具合です。 データを反映させたいシートも前4列は同じ様な構造をしています。 これにあと複数列足した感じになってます。 【反映させたいシート】 A1(クラス名)列| B1(番号) 列 | C1(名前:漢字) 列 | D1(名前:かな) 列 | E1 別項目 |… -------------------------------------------------------------------------------- A2  3-7  |  B2 2 | C2 田中 次郎   | D2 たなか じろう   | ×× |… ここで名前列に名前(漢字、もしくはかな)を入れるか、 もしくはクラス名+番号ですぐさま該当シートの特定し、 合致するE列以前の残りのデータを全て取得してくる。 反映させたシートのE列などに入れたデータを 今度はデータシートへとリンクさせるという風な プログラムを組みたいです。 こういった具合のエクセルシートを作成したいのですが、 どのようにしたら良いでしょうか? プログラムの様にIF文などを使用する感じになるのでしょうか? それともデータのシートに別でIDなどユニークな値を各々の データに割り振らないとダメでしょうか? また参考として知りたいのですが、 1行に引っ張りたくないデータが多数あっても行単位で3列の分だけ取得して、 1行にある3列分のデータを同じ1行3列に反映させることは可能でしょうか? 説明が下手で意味が解り辛い所もあるかもしれませんが、 回答よろしくお願いします。

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • エクセル 複数シートのデータをまとめたい

    他の質問を参照したのですが、できないのでお願いします。 新しいシート(ブックでもいいです)に次のデータを ひとまとめにしたい。 外国語テストのデータです。 (1)ひとつのブックにシートが十枚ある (2)列a2~h2 行2~29までデータがある。 (3)列a番号(a2が1、a29が28)  列b空欄  列c日本語  列d外国語 この構造を倍にしているのでa~hにデータが並んでいる。 これを、 つまり、8×28のデータが各シートにあるわけですが 【ひとつ】 できればシート1のデータの下 29行目からシート2のデータ、58行目からシート3… というように並べたい。 【ふたつ】 更にできるならa~dの下にe~hを持ってきて 4×56の並びにして 57行目からシート2のデータ…というように並べたい。 データの並びは列a列eの番号順を保持できたらうれしいです。 どうぞよろしくお願い致します。

  • シート内の一部のセルを別シートにコピー

    Excelのマクロ(VBA)の記載方法について お分かりになる箇所だけでも結構ですので、 どなたかご教授を願い致します。 シートX   A    B   C  1 data1 data2 data3 2 x   data7 data8 3 data4 data5 data6 4 data7 data8 data9 シート Y   A   B   C    D 1 length 3  (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz  (任意) (任意) (任意) 4 (空白)(任意) (任意) (任意) 上記のような2つのシート(同一Excelファイル内)があって、 シートXの一部のセルを次の条件(1~4)でシートYにコピーしたい場合 1.コピー元の列の数は、シートYの "length"と書かれたセルの右となりの数字   とする(上記では3なので、A,B,C列をコピー対象) 2.コピー元の行の数は、シートXの1~4行目までとするが、   シートXのA列のセルが"x"だったら、その行は全てコピーしない。 3.コピー先(Y)の列は、コピー元(X)の列と一つずれてコピー(BならCに、CならDに) 4.コピー先(Y)の行は、シートYのA列で1行からで始めて空白セルになった行からコピー開始。 (上記では、A列で空白セルのある4行目からコピー) 上記条件で、下記のシートYを作成したいのですが、 この場合どようなマクロ(VBA)で実現できますでしょうか。 コピー結果(シートY)  A     B   C   D 1 length  3  (任意) (任意) 2 xxxx  (任意) (任意) (任意) 3 zzz   (任意) (任意) (任意) 4 (空白) data1 data2 data3 5 (任意) data4 data5 data6 6 (任意) data7 data8 data9

  • エクセルでシート1の連続している行をシート2に表示

    こんにちは。エクセルでの作業方法の質問です。 早速ですが、シート1のA列が縦に1日~月末まで月日表示されています。その1日分は2行を結合して1日分となっています。 また1日分の横(B列~Z列)に数字のデータが並んでいます。 その中で1日分の行だけを隣のシート2に表示したいのです。 さらにその表示する1日分のデータ(B列~Z列)は、いわゆる現在の 日付『=TODAY()』のようにエクセルを開いた時に当日のデータをシート1から持ってきて表示(参照?)したいのです。 例えば:シート1に下記のデータがあります。 A   B   C    D    E 7/1  6    3    9    11 7/2  10   2 8 15 7/3 2 1 8 12 今日が7/2だとしたら上記シート1から 7/2 10 2 8 15の行だけをシート2の任意の 行に表示させたいわけです。 翌日になったら、7/3の行をシート2の同じ位置に 表示させたいのです。 前日(この場合7/2のデータは上書きされて7/3のデータ が表示されればよいです。) 以上ですが、質問の表現方法がうまくなくてすみません。 どうか、よろしくお願いします。

  • エクセルでシート1の連続している行をシート2に表示

    こんにちは。エクセルでの作業方法の質問です。 早速ですが、シート1のA列が縦に1日~月末まで月日表示されています。その1日分は2行を結合して1日分となっています。 また1日分の横(B列~Z列)に数字のデータが並んでいます。 その中で1日分の行だけを隣のシート2に表示したいのです。 さらにその表示する1日分のデータ(B列~Z列)は、いわゆる現在の 日付『=TODAY()』のようにエクセルを開いた時に当日のデータをシート1から持ってきて表示(参照?)したいのです。 例えば:シート1に下記のデータがあります。 A   B   C    D    E 7/1  6 3 9 11 7/2  10 2 8 15 7/3 2 6 1 7 今日が7/2だとしたら上記シート1から 7/2 10 2 8 15の行だけをシート2の任意の 行に表示させたいわけです。 翌日になったら、7/3の行をシート2の同じ位置に 表示させたいのです。 前日(この場合7/2のデータは上書きされて7/3のデータ が表示されればよいです。) 以上ですが、質問の表現方法がうまくなくてすみません。 どうか、よろしくお願いします。

  • エクセルで複数のシートのピボットテーブルを使用する方法

    ひつのシートのピボットテーブルでは、ウィザードを使って、レイアウト選択メニューで行・列それぞれ必要とする項目名(フィールド)をドラッグ選択できますが、複数シートで作成すると行・列それぞれが「行」「列」の表示だけで任意の項目を選択できません。試しに複数のシートで同じフォームで全てのセルにデータが存在すれば可能なようですが・・・ 問題のファイルは、各シートのデータフォームが若干異なっています。ただし、項目名の一部は共通です。また、シートによって入力していないの項目列があります。ただし、ピボットテーブルで必要とするデータの行列ともに同一項目名でデータは存在しています。例 データ列 A~J列の10列分、シート1は全て入力済、シート2は3・4列目が未入力(空白)、シート3は9・10列目が未入力(空白)。レイアウトで任意の項目をドラッグ出来ず「列」「行」としか選択出来ません。それぞれA~J列を選択して、1・5・6・7列のデータの表示をしたいのですが、どなたか教えてください。よろしくお願いします。

専門家に質問してみよう