• ベストアンサー

[Excel] エクセルでこんな事(Sheet1->Sheet2,3条件コピー)出来ますか?

こんにちは。 Excelのデータ入力&整理で悩んでいます。 下記のような表(Sheet1)を作り、さらに条件によって自動的に項目ごとに整理(Sheet2,3)するなんて事は出来ますでしょうか? 【例】 Sheet1(全体表示) これは全て手入力 1-1 製品A 10 1-2 製品B 5 2-1 製品X 33 2-2 製品Y 60 1-3 製品C 7 2-3 製品Z 12 となっているものを自動的に Sheet2(1-xの表示) 1-1 製品A 10 1-2 製品B 5 1-3 製品C 7 Sheet3(2-xの表示) 2-1 製品X 33 2-2 製品Y 60 2-3 製品Z 12 と表示させたいのです。Sheet2,3はもちろん入力していません。 データは全てSheet1に入力しています。このシートのみ入力します。 Sheet1のキー項目によって、自動的にデータをSheet2とSheet3へコピー?し見やすくします。 Excelのbookは、別でも一緒でもかまいません。 よろしくお願いいたします。

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

  • ベストアンサー
  • grace2973
  • ベストアンサー率66% (16/24)
回答No.1

回答になっていないのですが、ふと気が付いたので。 1-xを抽出したり、2-xを抽出したりしたいってことですよね? この表なんですが、 A列に大分類、B列に小分類といった感じで分けることはできませんか? ↓こんな感じ A B C    D ------------- 1 1 製品A 10 1 2 製品B 5 2 1 製品X 33 2 2 製品Y 60 1 3 製品C 7 2 3 製品Z 12 そうすれば、オートフィルタでA列が1のものだけ表示とかできるのですが。 どうしても 1-1 と入力しなればならないのであれば 回答になってませんので、気にしないで下さい。

sukeken
質問者

お礼

こんにちは。 その節はありがとうございました。

sukeken
質問者

補足

こんにちは。 はい、1-1 -> 1 1 とセル分けるのはぜんぜん大丈夫です。 Sheet2,3へ持っていったとき、行は詰まるのですか? そこが良く分かりません。 よろしくお願いします。

その他の回答 (4)

回答No.5

力技でいきます。 Sheet1に コード 商品 数量 1-1  A  10 1-2  B   5 2-1  X  33 のように1行目に項目名、2行目から最大100行目までがデータとします。 Sheet2のA1からC1にも、コード 商品 数量と、項目名を入れます。 Sheet2のF2に =IF(ISERROR(MATCH("1-*",Sheet1!A$2:A$100,0)),"",MATCH("1-*",Sheet1!A$2:A$100,0)) Sheet2のF3に =IF(ISERROR(MATCH("1-*",INDIRECT("Sheet1!A"&F2+2&":A100"),0)),"",MATCH("1-*",INDIRECT("Sheet1!A"&F2+2&":A100"),0)) Sheet2のF4に =IF(ISERROR(MATCH("1-*",INDIRECT("Sheet1!A"&SUM(F$2:F3)+2&":A100"),0)),"",MATCH("1-*",INDIRECT("Sheet1!A"&SUM(F$2:F3)+2&":A100"),0)) と入力。 Sheet2のA2からC2を、A2がアクティブになるように選択し(普通にA2からC2の方向に選んだ状態です)、 =IF(ISERROR(MATCH("1-*",Sheet1!A$2:A$100,0)),"",OFFSET(Sheet1!A$2,F2-1,0,1,4)) と入力し、Ctrl、Shiftを押しながらEnter。 Sheet2のA3からC3を、A3がアクティブになるように選択し、 =IF(ISERROR(MATCH("1-*",INDIRECT("Sheet1!A"&F2+2&":A100"),0)),"",OFFSET(Sheet1!A$2,SUM(F$2:F3)-1,0,1,3)) と入力し、Ctrl、Shiftを押しながらEnter。 Sheet2のA4からC4を、A4がアクティブになるように選択し、 =IF(ISERROR(MATCH("1-*",INDIRECT("Sheet1!A"&SUM(F$2:F3)+2&":A100"),0)),"",OFFSET(Sheet1!A$2,SUM(F$2:F4)-1,0,1,3)) と入力し、Ctrl、Shiftを押しながらEnter。 Sheet2のA4からF4を選択し、コピー。 Sheet2のA5からA100を選択し、貼り付け。 Sheet2全体をコピー。 Sheet3に貼り付け。そのままCtrlを押しながらH(或いは編集→置換)、 検索する文字列に 1-* 、置換後の文字列に 2-* で、すべて置換。 あとはSheet2・3のF列は作業用ですので、「表示しない」にした方が見栄えがいいかな? データが100より多ければA100とかA$100の数字を直して下さい。(Sheet2のA4からF4の貼り付け先も増やしてね) 見慣れない関数もあると思いますが、とりあえず書いてある通りにやってみて下さい。

sukeken
質問者

お礼

こんにちは。 返事遅くなりました。 力技結構好きです(笑。 何を行っているのさえ理解できれば何とかなりそうです。 さて、マクロで行くか力技で行くか…。 ありがとうございました。 でわ!

  • grace2973
  • ベストアンサー率66% (16/24)
回答No.4

マクロで作成できるのであれば、いろいろできますので。 参考までに 「Sheet1のデータをSheet2に転記するマクロ」 は下記のようになります。 Public Sub 抽出()  Dim row1 As Long  Dim row2 As Long  Dim col As Integer  Dim ws1 As Worksheet 'データシート  Dim ws2 As Worksheet '転記先シート  Set ws1 = Worksheets("Sheet1") 'シート名で指定してます  Set ws2 = Worksheets("Sheet2") 'シート名で指定してます  row2 = 1 '転記先のシートの最初の行番号  '1行目からデータのある最後の行までループ  For row1 = 1 To ws1.Range("A65536").End(xlUp).row   If Left(ws1.Cells(row1, 1), 2) = "1-" Then '←A列が「1-」で始まるかどうかの判断    '一致すれば、データを転記    For col = 1 To 3     ws2.Cells(row2, col) = ws1.Cells(row1, col)    Next col    row2 = row2 + 1 '転記先のシートの行番号を次に移動する   End If  Next row1 End Sub これを「ツール」-「マクロ」-「Visual Basic Editor」 でエディタを開いて 「挿入」-「標準モジュール」 で標準モジュールに記述すれば、マクロが使えるようになりますので。 後は、データ入力後に「ツール」-「マクロ」-「マクロ」 に「抽出」というのが出てきますから、実行してください。 ソースコードにコメント書いてますので ヘルプも見ながら参考にしてください。

sukeken
質問者

お礼

こんにちは。 返事遅くなりました。 これからチャレンジして見たいと思います。といってもこればかりやっているわけにも行きませんが…(笑。 丁寧な解説ありがとうございます。 エクセル少し突っ込んでやってみようかなと思うようになりました。 さて、どうなりますか? でわ!

  • grace2973
  • ベストアンサー率66% (16/24)
回答No.3

#1の回答に対する補足についてですが、 オートフィルタをかけて全体をコピーして sheet2に貼り付ければOKです。 いちいち、コピー&ペーストするのは面倒だというのであれば、 マクロを作成するか、#2の方などの方法で、 あらかじめsheet2に細工する必要があります。 但し、あらかじめsheet2に細工しておくということは sheet1のデータ件数がsheet2に細工した行数より多くなった場合に、 結局、sheet2の1行を必要分コピーするという作業が発生します。 やはり、あとあとの作業が一番楽なのは マクロを作成することだと思います。 入力後に「マクロ実行」で一発ですから。 もし、マクロを作成したいのであれば、また回答いたします。

sukeken
質問者

お礼

こんにちは。 何回ものレス感謝です。 実は、打ち込むのは私なんですが、見るのは素人さんばかりです。なので、開いたと同時にいろいろな形で見られるのがゴールと考えています。 私はべた打ち。 他の人は、機種別や納期別で見られたら… なんて考えています。 やはりマクロが手っ取り早いんでしょうか? と言っても、分かっていませんが。 ありがとうございました。 そして、よろしくお願いいたします。

回答No.2

たとえば、SHEET2に1-1,1-2を事前に入力しておくのはダメなのでしょうか。 それが、許されるのであれば、SHEET1には以下のデータを用意しておきます。 A列 B列 コード製品名 1-1 製品A 10 1-2 製品B 5 2-1 製品X 33 2-2 製品Y 60 1-3 製品C 7 2-3 製品Z 12 (以下100行まで) SHEET2に A列 B列 コード 製品名 1-1 1-2 1-3 ・・・ B2に=IF(COUNTIF(Sheet1!A2:A100,A2)=1,VLOOKUP(A2,Sheet1!A2:B100,2,0),"") を入力し、必要行までコピーしておきます。 A列が空欄、もしくは該当がなければB列は何も表示されません。 もし、B列の途中に空白行が発生した場合は、オートフィルターをかけて、フィルタのオプションから、空白以外のセルを指定すれば、行は詰まって表示されます。

sukeken
質問者

お礼

こんにちは。 丁寧にありがとうございます。 少し試して見ました。知らない事が出来ると言うのは面白いですね。ちょっとまだ変ですけど、いじって見ようと思います。 どもでした。

関連するQ&A

  • エクセルでシートをまたいでコピー

     エクセルでたとえば A商店 だいこん 1 200 A商店 にんじん 2 180 B会社 リンゴ  1 200 C販売 からいも 1 100 C販売 お茶   1 200  とかある時に1枚目の「A商店」という名のシートに、そのシートに だいこん 1 200 にんじん 2 180 B会社のシートに りんご 1 200 C販売のシートに からいも 1 100 お茶   1 200 とかに自動的に振り分ける方法はないでしょうか。シートの名前まで自動的につける必要はありません。すでにシートは作ってあります。データベースで作ったデータが1万行以上あり、前任者がエクセルで作った表に変換しなければならないのです。シートは約30枚あり、テーブル内のレコードの項目順の並べ替えはすんでいますが、順序はエクセルのシートの順番とは違います。わかりにくいとは思いますが補足要求をしていただければ再度ご説明します。よろしくお願いします。

  • Excelで2つのシートを1枚で印刷したい

    現在シートAに、A3用紙縦サイズで左側に項目Xを、右側に項目Yを入力しています。 以下のような構成になっています。 X     Y  X-1    Y-1  X-2    Y-2  X-3    Y-3  X-4    Y-4  X-9    Y-5 上記のような形になってるのですが ここに、項目X、Yともに不定期で項目の追加・削除が発生します。 行の追加では、X,Yともに1行追加されてしまうため、 その度に手動で、追加しない方の並び順を修正していました。 ですが、さすがに不定期とはいえ、何度も修正するのも大変なので シートAを分割(項目XはシートB,項目YはシートCに分けて記入)し、 印刷の時だけ1枚のA3用紙にXYの並びで印刷できればと思っています。 印刷時の印刷対象をブック全体にして、印刷のオプションでページレイアウトを2ページ/枚でできるかと思ったのですが、 やりたいのはA3縦で左側にシートBの内容を、右側にシートCの内容を表示させたいので、上記方法ではA3横での印刷となってしまうため うまくいきませんでした。 他に何か方法があればと思っているのですが見つかりません。 お知恵をお貸しいただければ幸いです。

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

    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

  • エクセル関数 複数条件?

    ・ ファイルあ シートに商品別日計数が記載されています        商品A  商品B  商品C 6/14土曜日  A1セル  B1セル  C1セル            ↑      ↑     ↑ いファイル土曜日シートX5  Y6   Z7 とリンクしている ________________________________________ 6/15日曜日  A2セル  B2セル  C2セル            ↑      ↑     ↑ いファイル日曜日シートX5  Y6   Z7 とリンクしている ________________________________________ 6/16月曜日  A3セル  B3セル  C3セル            ↑      ↑     ↑ いファイル月曜日シートX5  Y6   Z7 とリンクしている ________________________________________ 他平日   A4セル  B4セル  C4セル           ↑      ↑     ↑ いファイル月曜日シートX5 Y6   Z7 とリンクしている ________________________________________ ・ い ファイルシートは日誌になっていて月数分の数のシートがあり、    日にち曜日ごとに、    ファイルあ シートの日計数を入力すると    リンクして表示するようになっています  いファイルも各シート各日ごとリンクしています いファイル 土曜日のシート ↓ 商品A X5←ファイルあシートA1セルとリンク⇒表示しないようにしたい 商品B Y6←ファイルあシートB1セルとリンク⇒表示しないようにしたい 商品C Z7←ファイルあシートC1セルとリンク⇒表示しないようにしたい いファイル 日曜日のシート ↓ 商品A X5←ファイルあシートA2セルとリンク⇒入力無で表示されない 商品B Y6←ファイルあシートB2セルとリンク⇒入力無で表示されない 商品C Z7←ファイルあシートC2セルとリンク⇒入力無で表示されない いファイル 月曜日のシート ↓ 商品A X5←ファイルあシートA3セルとリンク⇒ファイルあシートA1セル+A3セル 土曜日とプラスして数値を表示したい 商品B Y6←ファイルあシートB3セルとリンク⇒ファイルあシートB1セル+B3セル 土曜日とプラスして数値を表示したい 商品C Z7←ファイルあシートC3セルとリンク⇒ファイルあシートC1セル+C3セル 土曜日とプラスして数値を表示したい ・ い ファイルシートのほうの月曜日に ファイルあ シートの第2土曜日分の日計数を足して表示したいのです  (第2土曜日分の日誌はなくしたい!   *実際はあるのですが、〈 むしろあってよいです〉   次の日にちとリンクしているため、休みとみなし日曜・祝日と同じように第2土曜日は、表示しない方法をとりたい)   他の平日はそのままの数値がリンクされるように したいのですが 勉強不足で四苦八苦です。    この説明でわかるでしょうか?不安ですが、  どうかよろしくお願いします。

  • EXCEL関数を教えてください

    いつもお世話になっております。 EXCEL関数について教えてください。 あるものの使用量A・B・C・Dがあります。 このA・B・C・D4つの項目はx・y・zという3つのラインで共通で使用する 使用量になっています。 x・y・zのラインは動いたり動かなかったりします。 A・B・C・Dの使用量をx・y・zの動いているラインのみに関数を使い自動 で振り分けして(x・yが動いている場合A~Dの使用量を1/2して振り分 けます)停止しているラインの使用量はゼロとしたいのですがどうすれば できるのでしょうか?x・y・zが動いているかいないかは生産量で判断します。    A   B   C   D   E   F   G   H   I   J   K 1      使用量           生産量     使用量振り分け 2  A   B   C    D   x   y   z   x    y   z 3 100  200  300  500  50  20  0 4 よろしくお願いします。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • Excel2003で2つの条件で入力規則リストを作りたい

    Excel2003で2つの条件で入力規則リストを作りたい シート1ではA、B、C項の組み合わせで1000行近く有ります。 シート2にてC,D項(シート1のA,B項)で入力規則のリスト選択する事によりE項(シート1のC項)に出てくる入力規則リスト項目を絞りたいと思います。 なお、A、B項の項目は別途データシートとして作成します。 どちら様か良いアイデアをお願いします。 ☆シート1    A項       B項        C項 1 業務種別   業務名        工程名 2 Yメンテ  設備(平日昼)      トラブル 3 Zメンテ  回線(平日昼)      トラブル 4 Yメンテ  設備(平日深)      トラブル 5 Yメンテ  設備(土休日昼夜)   トラブル 6 Zメンテ  設備(土休日深夜)   トラブル 7 Yメンテ  設備(平日昼)      返納処理 8 Yメンテ  設備(平日昼)      開通 9 Yメンテ  回線(平日夜)      開通 ☆シート2(管理シート) A項   B項   C項     D項       E項      P項目 R項目  Yメンテ  設備(平日昼)  トラブル ▽ ←入力規則のリスト                             返納処理                             開通 以上よろしくお願い致します。

  • Excel2003で2つの条件で入力規則リストを作りたい(追加条件)

    Excel2003で2つの条件で入力規則リストを作りたい(追加条件) Excel2003で2つの条件で入力規則リストを作りたい で教えていただいた件の、追加条件です。 前回教えて頂いた条件はシート1ではA、B、C項の組み合わせで1000行近く有ります。 だったのですが、実際にはA、B、C、D、E・・・項とあり、 C項を入力規則で選択する事により、D、E・・・項を自動的に選択出来るようにしたいと思います。 当初はC項(シート2ではE項)の選択さきから簡単に検索出来ると思っていましたが、 INDEX関数の選択した相対位置を得る方法が判りません? 度々すみませんがよろしくお願いします。 ☆シート1    A項       B項        C項      D項    E項 1 業務種別   業務名        工程名   コード   サブコード 2 Yメンテ  設備(平日昼)      トラブル Y-101   001 3 Zメンテ  回線(平日昼)      トラブル   Z-101   001 4 Yメンテ  設備(平日深)      トラブル   Y-201   001 5 Yメンテ  設備(土休日昼夜)   トラブル   Y-202   001 6 Zメンテ  設備(土休日深夜)   トラブル   Z-202   001 7 Yメンテ  設備(平日昼)      返納処理  Y-101   002 8 Yメンテ  設備(平日昼)      開通     Y101    003 9 Yメンテ  回線(平日夜)      開通     Y301    002 ☆シート2(管理シート) A項   B項   C項     D項       E項    F項   G項    P項目 R項目  Yメンテ  設備(平日昼)  トラブル  Y-201  001                             ↑                         入力規則で選択でF項、G項を取り込みたい。

  • Excel2003で2つの条件で入力規則リストを作りたい(追加条件)

    Excel2003で2つの条件で入力規則リストを作りたい(追加条件) Excel2003で2つの条件で入力規則リストを作りたい で教えていただいた件の、追加条件です。 前回教えて頂いた条件はシート1ではA、B、C項の組み合わせで1000行近く有ります。 だったのですが、実際にはA、B、C、D、E・・・項とあり、 C項を入力規則で選択する事により、D、E・・・項を自動的に選択出来るようにしたいと思います。 当初はC項(シート2ではE項)の選択さきから簡単に検索出来ると思っていましたが、 INDEX関数の選択した相対位置を得る方法が判りません? 度々すみませんがよろしくお願いします。 ☆シート1    A項       B項        C項      D項    E項 1 業務種別   業務名        工程名   コード   サブコード 2 Yメンテ  設備(平日昼)      トラブル Y-101   001 3 Zメンテ  回線(平日昼)      トラブル   Z-101   001 4 Yメンテ  設備(平日深)      トラブル   Y-201   001 5 Yメンテ  設備(土休日昼夜)   トラブル   Y-202   001 6 Zメンテ  設備(土休日深夜)   トラブル   Z-202   001 7 Yメンテ  設備(平日昼)      返納処理  Y-101   002 8 Yメンテ  設備(平日昼)      開通     Y101    003 9 Yメンテ  回線(平日夜)      開通     Y301    002 ☆シート2(管理シート) A項   B項   C項     D項       E項    F項   G項    P項目 R項目  Yメンテ  設備(平日昼)  トラブル  Y-201  001                             ↑                         入力規則で選択でF項、G項を取り込みたい。

  • 複数条件の設定について(EXCEL)

    EXCELで、次のような表を作成しています。 シート1               シート2 得意先名  商品名  納品日       A社 B社 C社  A社     X           X  B社     Z           Y  A社     X           Z  C社     Y シート2には、得意先&商品ごとに納品日が入力されたら件数がカウントされるように したいんです。今までの質問をヒントに、SUMPRODUCT関数やIF関数で SUMPRODUCT((得意先名="A社")*(商品名="X")*(納品日<>"")) IF(納品日<>"",SUMPRODUCT((得意先名="A社")*(商品名="X")),"") と作成してみたんですが、うまく行きません。 マクロはわからないんで、できればマクロを使わずに作成したいんですが、何か方法は ありますか?

専門家に質問してみよう