[[20180605113633]] 『データ抽出につきまして』(行き詰まり中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データ抽出につきまして』(行き詰まり中)

どなたかご教授ください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.