• ベストアンサー

excelで1つの表から2つの表の作り方

excelの表について教えてください。 sheet1に1つの表が下のようにあります。   A  B  C  D  E  F  G 1 1 あ 亀 白 32 目 木 2 2 い 鶴 赤 25 耳 海 3 2 う 猿 青 44 鼻 川 4 1 え 牛 緑 76 口 湖 5 1 お 犬 黄 14 手 沼 6 2 か 猫 紫 83 足 丘 ここから2つの表を別のsheetに作りたいのです。 sheet2には、   A  B  C  D  E  F  G 1 1 あ 亀 白 32 目 木 2 1 え 牛 緑 76 口 湖 3 1 お 犬 黄 14 手 沼 と、A列の「1」の行だけを、また sheet3には、   A  B  C  D  E  F  G 1 2 い 鶴 赤 25 耳 海 2 2 う 猿 青 44 鼻 川 3 2 か 猫 紫 83 足 丘 と、A列の「2」の行だけを、それぞれ作りたいのです。 しかも、sheet1のA列に、1か2を入力することで、 自動的に、sheet2に1を記入した行を、sheet3に2を記入した行を割り振るようにしたいのです。  よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

配列数式は重くなるので作業列案です。 (1行目がタイトル行ならもう少し簡素化できるんですが) I1セル : =IF($A1=1,2,1) J1セル : =IF($A1=2,2,1) I2セル : =IF($A2=1,SUM(I1,1),I1) J2セル : =IF($A2=2,SUM(J1,1),J1) K1セル : =IF(I1=2,1,MATCH(ROW(),I:I)+1) L1セル : =IF(J1=2,1,MATCH(ROW(),J:J)+1) K2セル : =IF(LOOKUP(10^10,I:I)>ROW(),MATCH(ROW(),I:I)+1) L2セル : =IF(LOOKUP(10^10,J:J)>ROW(),MATCH(ROW(),J:J)+1) I2:L2セルを選んでフィルハンドルをダブルクリック Sheet2!A1セル : =IF(Sheet1!$K1,INDEX(Sheet1!A:A,Sheet1!$K1),"") 右へ下へオートフィル 同様にSheet3も =IF(Sheet1!$L1,INDEX(Sheet1!A:A,Sheet1!$L1),"")

inchaku
質問者

お礼

ありがとうございました。 項目の点で、うまくいきませんでしたが…。 もう資料を作成しなければいけないので…。

inchaku
質問者

補足

ありがとうございます。うまくいきました。 しかし、 それぞれのシートの1行目に、項目を入れると、うまくいきません。   項目…番号、ひらがな、動物、色、数字、体、自然 すみません。これを入れるのを忘れてしまいました。 sheet2、sheet3の1行目は上の項目、2行目からデータを割り振りたいのです。 自分でやってみたところ、2行目にも項目が割り振られ、データもうまくいきません。 すみません。教えてください。無礼を承知…。

その他の回答 (4)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

マクロで Sheet1のタブを右クリック-コードの表示 出てきた画面に下のマクロをコピペ 画面を閉じる 新しく入力された部分だけのマクロなので、それまでに入力されたデータは 自力で振り分けてください A列の1か2は最後に入力してください Private Sub Worksheet_Change(ByVal Target As Range) Dim a Dim wks As Worksheet If Target.Column <> 1 Then Exit Sub a = Range(Target, Cells(Target.Row, 7)) If Target.Value = 1 Then Set wks = Worksheets("sheet2") ElseIf Target.Value = 2 Then Set wks = Worksheets("sheet3") Else Exit Sub End If wks.Range("a65536").End(xlUp).Offset(1, 0).Resize(1, 7) = a End Sub

inchaku
質問者

お礼

ありがとうございます。 やっぱり後で変更して割り振るのは、難しいのですね。

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.4

処理が重くなってしまうので作業列を一つ使用するパターンの一例を。 (作業列は白塗りにするなり非表示にするなりで) Sheet2のH列を使うとして、 H1 =1 H2 =MATCH(H1,Sheet1!A:A,0) H3 =IFERROR(MATCH(H$1,OFFSET(Sheet1!$A$1,H2,,100),0)+H2,"") 以下コピー。(100のところは、Sheet1のA列に入る1が100行以上間を空けないという仮定) A1 =IFERROR(INDEX(Sheet1!A:A,$H2),"") これを縦横にコピー(H列はダメョ) Sheet3以降はSheet2をコピーしてH1を2などに変更するだけ

inchaku
質問者

お礼

ありがとうございます。 やってみます。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

オートフィルタではいけませんか? A列を1又は2でフィルタ 抽出後、編集 → ジャンプ → セル選択 → 可視セルをポイント → コピー → Sheet2に貼り付け Excel(エクセル)基本講座:オートフィルタ(データ抽出) http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter.htm 可視セル選択 http://hamachan.info/excel/kasiseru.html

inchaku
質問者

お礼

ありがとうございました。 オートフィルタでやってみたのですが、変更があった場合はのやり直しの点で、難しいかなぁと…。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 各シートのA1に設定、縦横にコピーしてく下さい。 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 因みに処理は重たくなりますので、VBAが良いかも知れません。 Sheet2!A1に=IF(COUNTIF(Sheet1!$A:$A,1)>ROW(A1)-1,INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$1:$A$1000=1,ROW(Sheet1!$A$1:$A$1000),99999),ROW(A1))),"") Sheet3!A1に=IF(COUNTIF(Sheet1!$A:$A,2)>ROW(A1)-1,INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$1:$A$1000=2,ROW(Sheet1!$A$1:$A$1000),99999),ROW(A1))),"")

inchaku
質問者

お礼

ありがとうございました。 自分にとっては、この数式の意味が全く何のことかわかりませんが、やってみます。

関連するQ&A

  • エクセルのマクロでこういう場合は?

    エクセル97です。 Sheet1の E3:J29 に表があります。 E列、F列は文字列、G列は数値、H~J列には式が入っています。 この表の G列の値が空白や0でない行だけをコピーして、Sheet2 のB2 以下に切れ目なく表の「値」を貼り付けるにはどうのようなマクロを書けばいいのでしょうか?(G列が空白や0の行はSheet2の表では一切無視され、空白行ができないようにしたいのです。) よろしくお願いします。

  • Excel2003での複雑な表計算、教えてください。

      A  B  C  D  E  F  G  ----------------------------------- 1|  4   6      1.2   4.8   5.6 2| 10   20       0.2  7.2   6.3 上記のような表で、 同じブックの別のシートのA1列より、 A1×E1の解 A1×F1の解 A1×G1の解 A2×E2の解 A2×F2の解 A2×G2の解(以降、A列の行に数字があれば同じように繰り返し) 隣のB列にも同じように、 B1×E1の解・・・というように計算をしていき表をつくりたいのですが、関数ではどうがんばってもうまくいきません。 VBAでやればなんとかできるかと思うのですが、本を読んでもさっぱりわかりません。。。 誰か詳しい方、教えてくだされば幸いです。 説明が足りなければご指摘ください。 よろしくお願いいたします。

  • エクセル 表のフォーマットを変えずに貼りたい

    office2010です。 シートAに、例えば4行×5列の表があります。 この表は、行や列の幅を適切な大きさに調整してあります。 この表をシートBに貼ると、表の行と列の幅は、シートBの幅になってしまいます。 シートAの票の形を崩さずに、シートBに貼るにはどうすれば良いのでしょうか?

  • エクセル関数の自動表示について

    自動表示についてご質問いたします。 シート1 (3月入力時)       A列  B列  C列  D列  E列  F列  G列  H列 1行目  1月   2  10  11  12  30  31  33 2行目  2月   1   2   5   8   9  10  48 3行目  3月   3   5  10  11  30  31  32 4行目  4月   こういうシート1の表があったとします。 シート1で3月入力した時点で、シート2では以下の表があったとします。        A列  B列  C列  D列  E列  F列  G列   1行目    3   5  10  11  30  31  32 と、自動で表示され。 4月(シート1)に数値を入力すれば、シート2の数値が最新数値に自動で入れ替わる・・・と、いう関数を作りたいのですが、いい関数ありますでしょうか? この場合、シート1ではB列~H列の数字の個数は固定(今回は7個)であり、毎回ランダムで数字が入力されていきます。 これをシート2の1行目、A列~G列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;

  • EXCELの関数について

    いつもお世話になってます。ありがとうございます。 excelの関数についてお聞きしたいことがあり質問しました。      A列 B列 C列 …        a   c   e  g  i 1行 2日 ○  △ □ ● ■ となっているデータを      A列 B列 C列 …      a   b   c  d   e  f  g  h  i … 1行 1日 2行 2日 3行 3日 こんなシートに自動的に打ち込めるようにしたいのです。      A列 B列 C列 …      a   b   c  d   e  f  g  h  i … 1行 1日 2行 2日○    △    □    ●    ■ 3行 3日 が完成図イメージです。 一番上の色々なデータから表を完成させたいのですがどうすればできるでしょうか。 vlookupやhlookupでは一行ずつの打ち直しが必要になってしまいます。 よろしくお願いします。

  • EXCEL

    A-B-C-D-E-F-G 1-A-W-A-1-B- 2-B-A-N-2-C- 3-C-K-A-3-B- 4-D-A-I-4-E- 5-E-R-X-5-A- 例えば,エクセルで表のようになっている場合に, 列AにF1の値(表の場合は文字B)で検索をかけ,検索に該当した行(表の場合では行2)の列Dの値をG1に表示する方法はあるでしょうか?? 簡単に言うと,列Gに自動的にFに対応するDの数値を入力したいのです.自動的に列Gを下の表のようにすることは可能でしょうか? A-B-C-D-E-F-G 1-A-W-A-1-B-2 2-B-A-N-2-C-3 3-C-K-A-3-B-2 4-D-A-I-4-E-5 5-E-R-X-5-A-4 投稿すると文字がずれてしまって表が見難くてすいません. どなたか,ご教授よろしくお願いします.

  • エクセルで横長の表を一枚に印刷したい

    エクセルの表で横長のデータシートがあります。 この横長データをA4一枚に印刷したいのですが。 ページ設定の「次のページに合わせて印刷」ですと小さくなってしまうので、あるところで折り返して一枚に印刷したいのです。 たとえばデータ列はA~AK間であります 印刷は A~F G~X Y~AK をA4一枚に行を変えて印刷したいのです。 エクセルは2002です。 よろしくお願いいたします。

  • エクセル2000での表の作成について

    仕事で困っています。よろしくお願いいたします。  あいう A123 B321 C 67 A45 D 59 E1 8 F123 ・ ・ ・ この列が1000行近くあり、いくつか重複がある。(上記の表でいえば Aのように) 上記のような表から  あいう 合計 A573 15 B321 6 C 67 13 D 59 14 E1 8 9 F123 6 こういう表をつくりたいと思っています。pibotをつかって  合計 A15 あ5     い7     う3 B6  あ3     い2     う1      こういう表はできたのですがレイアウトが気に入りません。 どなたかご教授ください。

  • EXCELで表をクロス形式に計算せずに表したい

    EXCEL2003を利用しています。 まず、写真を確認お願いいたします。SHEET1に ・A列 No ・B列 年月日 ・C列 会社 ・D列 商品 の表があります。それをSHEET2で ・行タイトルで会社名 ・列タイトルで年月日 の表をつくり、表のデータには、写真のように 商品を計算せずに書き出す。ということをしたいです。 これを手作業で行うのは大変なので、できればうまく簡単に出来るようにしたいです。 ピヴォットテーブルであれば、何らかの計算をしたものを楽に表示することができるのは知っているのですが、このように計算せずに簡単に表示させる方法を教えてもらえないでしょうか? https://www.dropbox.com/s/nxsgkfgd6k9ti11/%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%9F%E7%94%BB%E5%83%8F%20%2820140708%20170550%29.jpg

  • 表作成(EXCEL)

    今回、excelで職場のライン表作成を任されまして、皆様のご意見をいただきたいと思いました。 単純な打ち込みはできるのですが、効率をあげるための手段として下記の方法を考えているのですが、詳しい方いましたらより良いアドバイスいただけると助かります。 <例> 例(sheet1)     A列     B列         C      D      E      F     G     H 時間         9:00     12:00  15:00  18:00  21:00  0:00  3:00  1行 勤務者1    a業務      d業務    c業務   2行 勤務者2              b業務  3行 勤務者3       例(sheet2)     A列     B列         C      D      E      F     G     H 時間         9:00     12:00  15:00  18:00  21:00  0:00  3:00  1行 勤務者1    b業務       c業務     a業務 2行 勤務者2    a業務         3行 勤務者3       sheet1に月曜 sheet2に火曜 ・・・といったように(わかりにくいかもしれませんが)曜日ごとに反映されるように関数を使用できれば手入力をせずとも済むのではと考えております。曜日ごとに業務内容の時間は違いますが毎週同じサイクルです。勤務者は7名で。 関数を使用してできる方法があればと考えております。

専門家に質問してみよう