[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データ抽出につきまして』(行き詰まり中)
どなたかご教授くださいm(__)m
【シート1】
A B C D E
55555 タロウ 2018/6/5 重複確認 1
57893 ハナコ 2018/6/5
59865 タロウ 2018/6/4 1
654953 コタロウ 2018/6/4 1
【シート2】
A
55555
59865
654953
上記のように【シート1】のE列が1の時、【シート2】A列に【シート1】A列の数字を表示させるにはどうすれば良いのでしょうか。
※【シート1】E列は1or空白のみ
※【シート1】A列に同番号なし
※実際のデータは空白200件、1が90件ほどあります
< 使用 Excel:Excel2010、使用 OS:Windows7 >
こんにちは ^^ Sheet1(シート1)のA列は空白無しが前程で。 シート名は環境に合わせてくださいね。 バックアップ必須 ^^;
Option Explicit Sub main() Dim sh01 As Worksheet, sh02 As Worksheet Dim i As Long, j As Long, rr As Range Set sh01 = Worksheets("Sheet1") Set sh02 = Worksheets("Sheet2") sh02.UsedRange.ClearContents Set rr = sh01.Range("A1").CurrentRegion For i = 1 To rr.Rows.Count If rr(i, 5).Value Then j = j + 1 sh02.Cells(j, 1) = rr(i, 1) End If Next End Sub (隠居じーさん) 2018/06/05(火) 14:27
シート2のA1セルに =IFERROR(INDEX(シート1!A:A,SMALL(IF(シート1!E$1:E$300=1,ROW($1:$300),""),ROW(A1))),"") と入力してShiftキーとCtrlキーを押しながらEnterキーで式を確定(確定後、式が{}で囲まれればOK)その後、下へフィルコピーしてみてくれ。 (ねむねむ) 2018/06/05(火) 14:34
こんなのも。 =IFERROR(VLOOKUP(ROW(A1),IF({1,0},INDEX(COUNTIF(INDIRECT("シート1!E1:E"&ROW($1:$300)),1),0),シート1!A$1:A$300),2,FALSE),"") これは通常通りEnterで式を確定。 (ねむねむ) 2018/06/05(火) 14:42
こんなのも。
作業列を使った方法です。
Sheet1 F1=IF(E1=1,COUNTIF(E1:E$1,1),"") として、下行の必要な範囲までコピーします。
Sheet2 A1=VLOOKUP(ROW(A1),IF({TRUE,FALSE},Sheet1!$F$1:$F$100,Sheet1!$A$1:$A$100),2,FALSE) として下行へコピーです。 エラー処理はしていませんが、必要であればISNA関数などで対応可能です。
(SS) 2018/06/06(水) 07:11
↑訂正します F1=IF(E1=1,COUNTIF(E1:E$1,1),"") ではなく F1=IF(E1=1,COUNTIF(E$1:E1,1),"") としてください。 (SS) 2018/06/06(水) 07:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.