回答3
trendymania さん
2014/08/09

エクセルの操作で教えてください。

現在、エクセルのテーブルを使って、データをまとめております。

そのまとめたデータを、指定されているフォームに合わせて、
必要なデータだけを抜き出したいのですが、なかなかうまくいきません。

そこで、下記の図のようなデータの抜き出しを行う際に、
どのような関数等を使えば良いのかを教えて下さい。

よろしくお願いします。

「エクセルの操作で教えてください。」の質問画像

0
通報する
ベストアンサー
tom04 さん
2014/08/10

No.1です。

>ただ、田中の列の全てのデータを別セルに表示させるのではなくて、
>必要な項目だけを、所定のセルに表示させたいです。

というコトですが、画像を拝見すると
フォーム1とフォーム2の表示したい項目が異なっていますよね?
これを決めてやらないと難しいと思います。

一例です。
前回同様の配置となりますが、↓の画像で下側がSheet2とします。
Sheet2の2行目項目はあらかじめ表示させたい項目を入力しておきます。
そしてA1セルのデータ変更、もしくは2行目の項目名の変更をすればそのデータを表示させるようにしてみました。

Sheet2のA3セル(前回同様、配列数式です)に
=IFERROR(INDEX(Sheet1!$A:$G,SMALL(IF(Sheet1!$A$1:$A$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1)),MATCH(A$2,Sheet1!$1:$1,0)),"")
という数式を入れ、Ctrl+Shift+Enterで確定し
列・行方向にコピーすると画像のような感じになります。

※ Sheet1が空白の場合「0」が表示されてしまいますので、それが目障りであれば
条件付き書式で「0」の場合のフォントを「白」に設定するか、
Excelのオプションから「ゼロ値のチェックを外す」操作が良いと思います。

こんなんではどうでしょうか?m(_ _)m

「エクセルの操作で教えてください。」の回答画像

0
通報する

この回答へのお礼

回答頂きありがとうございます。

この数式を使って、いろいろ試してみます。

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

通報する
queensandkings さん
2014/08/10

(1)
別のシートに
単純に

で、表示させたいセルを選ぶ。

これで、田中、吉田に関係なく、必要な項目だけが元データを参照して表示されます。
必要な項目が、
(住所、価格、日付)
(住所、日付、備考)
などと違う場合は、別のシートを立てる。

(2)
名前を抽出したいので、その名前を抽出する。
EXCEL2007ですと、「データ」「フィルタ」で名前ところをクリックする。

こんなんでどうでしょうか。

0
通報する

この回答へのお礼

回答頂きありがとうございます。

元データの方ではフィルタ機能を使う予定ですが、
別シートでは、規定のフォームに必要なデータを反映させたいので、
フィルタを使うのは出来ないと思います。

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

通報する
tom04 さん
2014/08/09

こんばんは!
↓の画像のように元データ(Sheet1にあるとします)のすべての氏名のSheetが揃っているとしての一例です。
↓の画像で上側が元データ(Sheet1)で下側が個人用のSheet(とりあえず「田中」さんのSheet)とします。

各SheetのA1セルにSheet1のA列氏名を入力し、画像通りの配置だとすると
「田中」SheetのA3セルに
=IFERROR(INDEX(Sheet1!A$1:A$1000,SMALL(IF(Sheet1!$A$1:$A$1000=$A$1,ROW($A$1:$A$1000)),ROW(A1))),"")
これは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合、
上記数式をドラッグ&コピー → 個人SheetのA3セルを選択 → 数式バー何に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後の{ }マークが入り配列数式になります。
これを列・行方向にフィルハンドルでコピー!
これで画像のような感じになります。

尚、この操作を行う場合はSheet2~最終Sheetを作業グループ化して行えば1Sheetのみの操作で大丈夫です。
元データが空白の場合「0」が表示されてしまいますので、それを表示させたくない場合は
メニュー → ファイル → オプション → 詳細設定 → 「次のシートで操作するときの・・・」の
「ゼロ値のセルに・・・」のチェックを外しておきます。

もし、A列氏名が何人いるk確定していない場合はVBAの方が簡単だと思います。
一例ですが、これも載せておきます。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, k As Long, lastRow As Long, str As String, wS As Worksheet, myFlg As Boolean
With Worksheets("Sheet1") '← Sheet1 は実際のSheet名に!
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
.Range("A:A").Insert
.Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=.Range("A1"), unique:=True
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
For k = 2 To Worksheets.Count
myFlg = False
If Worksheets(k).Name = .Cells(i, "A") Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = .Cells(i, "A")
End If
str = .Cells(i, "A")
.Range("A1").AutoFilter field:=2, Criteria1:=str
Set wS = Worksheets(str)
wS.Cells.Clear
Range(.Cells(1, "B"), .Cells(lastRow, "H")).SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
Next i
.AutoFilterMode = False
.Range("A:A").Delete
Application.ScreenUpdating = True
End With
End Sub 'この行まで

※ VBAの場合は元データの変更があるたびにマクロを実行する必要があります。m(_ _)m

「エクセルの操作で教えてください。」の回答画像

0
通報する

この回答へのお礼

回答頂きありがとうございます。

ただ、田中の列の全てのデータを別セルに表示させるのではなくて、
必要な項目だけを、所定のセルに表示させたいです。

そのようなやり方はありますでしょうか?

通報する
このページの先頭へ