アプリ版:「スタンプのみでお礼する」機能のリリースについて

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を記入した行を割り振るようにしたいのです。
 よろしくお願いいたします。

A 回答 (5件)

配列数式は重くなるので作業列案です。


(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),"")
「excelで1つの表から2つの表の作り方」の回答画像3

この回答への補足

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

補足日時:2009/03/21 07:49
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/23 16:58

マクロで


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/21 07:18

処理が重くなってしまうので作業列を一つ使用するパターンの一例を。


(作業列は白塗りにするなり非表示にするなりで)

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などに変更するだけ
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/22 06:58

オートフィルタではいけませんか?


A列を1又は2でフィルタ
抽出後、編集 → ジャンプ → セル選択 → 可視セルをポイント → コピー → Sheet2に貼り付け

Excel(エクセル)基本講座:オートフィルタ(データ抽出)
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …

可視セル選択
http://hamachan.info/excel/kasiseru.html
「excelで1つの表から2つの表の作り方」の回答画像2
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/21 07:15

一例です。


各シートの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))),"")
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/21 07:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!