ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

Excelのデータベースから抽出について。
Excelで住所録のデータベースを作っております。
見やすく、書込みやすくするために市販のノート住所録風に印刷したいと思っております。
そこで、印刷するためのシートを別に作り、そこにデータベースから引っ張って来ようと考えてます。
=を使ってデータベースのページを引っ張って来るとこは出来ましたが、データベースでオートフィルターを使って抽出しても、そのままで、印刷側に反映しません。
引っ張ってくるセルを固定しているので、こうなってしまうのは当たり前の話なのですが…
データベースから抽出した時に見えている列を引っ張って来る様には出来ないでしょうか?

質問者からの補足コメント

  • レイアウトですか…
    上の段と名前、電話番号、他で住所を中段、下段にメモ欄を付けたいと思ってます。
    こんなんで伝わりますか?

      補足日時:2018/02/06 15:58
  • 写真アップ出来るんですね…知りませんでした。
    こんな感じです。

    「Excelのデータベースから抽出について」の補足画像2
      補足日時:2018/02/07 13:54
  • 写真アップ出来るんですね。
    知りませんでした。

    「Excelのデータベースから抽出について」の補足画像3
      補足日時:2018/02/07 13:55
  • 写真アップ出来るんですね…知りませんでした。

    「Excelのデータベースから抽出について」の補足画像4
      補足日時:2018/02/07 14:11

A 回答 (3件)

こんにちは



レイアウト等がわからないので、適当に仮定して方法のアイデアとしての回答です。

・元のデータはオートフィルタと書いてあるので、1行がひと組のデータとなっているものとします。
・抽出先のレイアウトはまったく不明なので、ひとまず別シートに1行ずつ元のデータと同じ形式で抽出する例です。
・関数で1発で求めるのは大変なので、元シートに作業列を追加しています。

以下、添付図で説明。
(図が縮小されるので見難いですが、なんとか判別可能と思います。)

1)元のデータがあるシートをSheet1と仮定しています。
2)左側の図が元データでフィルタなしの状態
 A2:C20がデータで、F列を作業列に利用しています
 F2に、=SUBTOTAL(3,A$2:A2) の式を入れ下方にフィルコピー
 (作業列は常に上から1,2,3…の表示になります)
3)中央の図が元データにフィルタを掛けた状態
 (図では、A列の山田、佐藤だけを表示するようにフィルタ)
4)右側の図が別シート(抽出用シート)のその時の表示
 A2に関数式、
=IFERROR(INDEX(Sheet1!$A$2:$C$20,MATCH(ROW(A1),Sheet1!$F$2:$F$20,0),COLUMN(A1)),"")
 を入れて、必要な範囲(右、下)へフィルコピーしてあります
「Excelのデータベースから抽出について」の回答画像3
    • good
    • 0

要するにこんな感じのことが、したいのですよね?


「VLOOKUP 関数の使い方」
https://www.tipsfound.com/excel/04vlookup2

他にも「VLOOKUP」で検索すればたくさんヒットするはずです。
お好みの物を参考にしてください。
    • good
    • 0

貴方が期待する「市販のノート住所録風」とはどんなレイアウトかをお示しください。

    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q特定の文字列を含む場合指定の値を返す エクセル関数

Vlookupだとセルの値全てで照合しますが、特定の文字列を含む場合でVlook的に利用するにはどうすればよいでしょうか。  find やIFだとキリがないかな・・と思い格闘中です。 
アドバイスいただけると幸いです。よろしくお願いします。

Aベストアンサー

こんにちは!
VBAになってしまいますが、一例です。

↓の画像のようにSheet1にSheet2の表に基づいて表示するとします。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)


Sub Sample1() 'この行から
Dim i As Long, k As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

Application.ScreenUpdating = False
Range(wS1.Cells(2, 2), wS1.Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
For k = 2 To wS2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To wS1.Cells(Rows.Count, 1).End(xlUp).Row
If InStr(wS1.Cells(i, 1), wS2.Cells(k, 1)) > 0 Then
wS1.Cells(i, 2) = wS2.Cells(k, 2)
End If
Next i
Next k
Application.ScreenUpdating = True
End Sub 'この行まで

※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。

お望みの方法でなかったらごめんなさいね。m(_ _)m

こんにちは!
VBAになってしまいますが、一例です。

↓の画像のようにSheet1にSheet2の表に基づいて表示するとします。

Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)


Sub Sample1() 'この行から
Dim i As Long, k As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")

Applic...続きを読む


人気Q&Aランキング