[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別シートへのデータ抽出方法』(エクセル初心者)
初めての質問です。
A B C 123 スズキ その他 456 カトウ 千葉 789 ヤマダ 茨城 147 イトウ その他 258 オオタ 京都
上記のようなデータがシート1にあり、C列が「その他」の場合のみ
別のシートのA列とB列にシート1のA列とB列のデータを抽出する方法がわかりません。
また、抽出したデータは空欄なく上詰めで表記されるようにしたいです。
素人質問ですいません。
何卒よろしくお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
1行目をタイトル行にしたうえで、フィルターオプションではだめですか?
(β) 2016/08/10(水) 19:38
毎日、検索用のデータを更新し、自動更新で抽出できるようにしたいのですが、
フィルターオプションで可能ですか?
(エクセル初心者) 2016/08/10(水) 20:06
フィルターオプションは、あくまでエクセルの機能であり、その機能を実行するためには 【操作】が必要です。そんなに、手の込んだ操作ではなく、ちょこちょこっといった程度ですけど。
そういった操作を一切したくない、何もしないで、シートを眺めたら、ちゃんと抽出されているということに こだわるなら、関数をシート上にぎっしりと埋め込むことになります。
あるいは、フィルターオプションの操作を束ねて、いわゆる、本当の意味での【マクロ】にしておいて ワンクリックで抽出ということもできますし、それこそ、この【マクロ】の稼働方法にちょっと手を入れれば 抽出用シートを開いたときの自動更新もできます。
(β) 2016/08/10(水) 20:53
関数処理なら、1行目がタイトル行で データが2行目からだとして
別シートの A2 : =IFERROR(INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$C$2:$C$1000="その他",ROW(C$2:C$1000)),ROW(A1))),"") これを Ctrl/Shift/Enter で配列数式として入力し、B1 にフィルコピーし、そのまま下にフィルコピー。
式の中の 1000 、対象の行を示していますが、足りなければ増やしてください。
まくろでやるなら、ThisWorkbookモジュールに(プロシジャ1つ抜けていましたので追加 8:57)
Dim ToDo As Boolean
Private Sub Workbook_Open()
ToDo = True
If ActiveSheet.Name = "Sheet2" Then Listing
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Sheet1" Then ToDo = True
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet2" And ToDo Then Listing
End Sub
Sub Listing()
Sheets("Sheet1").Columns("A:C").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Sheet2").Range("D1:D2"), CopyToRange:=Sheets("Sheet2").Range("A1:B1"), Unique:=False
ToDo = False
End Sub
とか。
(β) 2016/08/12(金) 08:53
=IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(A1),INDEX(COUNTIF(INDIRECT("Sheet1!C1:C"&ROW($1:$100)),"その他"),0),0)),"")
でも。
これは通常通りEnterで確定。
(ねむねむ) 2016/08/12(金) 09:13
さっそく試してみます。
(エクセル初心者) 2016/08/12(金) 11:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.