[[20190118153627]] 『条件式に合う値を1列のデータから抽出』(Aoi) ページの最後に飛ぶ

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

 

『条件式に合う値を1列のデータから抽出』(Aoi)

初めまして。質問させて頂きます。

条件式に合う値を1列に並んだ複数データから抽出する方法を探しています。
A列B列のデータを用いた条件式を満たすデータを、A列から検索し、それらすべてをC列に抽出せよ

というような作業です。

VBA初心者なのですが、単なるエクセル関数 (INDEXやVLOOKUP)では困難だと考え、VBAの利用ができないかご相談です。

(例)
<データ格納列>
A列 A1:A100
B列 B1:B100

<データ検索対象>
A列 A1:A100

<データ抽出列>
C列

<条件式>
(A1-B1)/B1 < 0.1

上記条件式を満たすデータを、A列から検索し、それらすべてをC列に抽出せよ

という作業です。

お手数ですが、ご教示頂けますと幸いです。
どうぞ宜しくお願い致します。

< 使用 Excel:Excel2013、使用 OS:unknown >


 関数でも可能だがVBAでの回答のほうがいいのだろうか?
(ねむねむ) 2019/01/18(金) 15:53

 困難と考えられた数式で回答。

 C列は詰めて表示

 C1 =IFERROR(INDEX(A$1:A$100,AGGREGATE(15,6,ROW(A$1:A$100)/((A$1:A$100-B$1:B$100)/B$1:B$100<1),ROW(A1))),"")
 下フィルコピー。

(GobGob) 2019/01/18(金) 16:01


 C1 =IFERROR(INDEX(A$1:A$100,AGGREGATE(15,6,ROW(A$1:A$100)/((A$1:A$100-B$1:B$100)/B$1:B$100<0.1),ROW(A1))),"")

 の間違いでしたw。
(GobGob) 2019/01/18(金) 16:03

 (A1-B1)/B1 < 0.1
 を開いて
 =IFERROR(INDEX(A$1:A$100,AGGREGATE(15,6,ROW(A$1:A$100)/(A$1:A$100/B$1:B$100<1.1),ROW(A1))),"")
 でも。
(ねむねむ) 2019/01/18(金) 16:09

 Sub SumpleMacro()
    Dim i As Long
    With ThisWorkbook.Sheets("Sheet1")
        For i = 1 To 100
            If (.Cells(i, "A") - .Cells(i, "B")) / .Cells(i, "B") < 0.1 Then
                .Cells(i, "C") = .Cells(i, "A")
            End If
        Next i
        '空白セルを削除して上詰めしたければ下の一行を付け加えてください
        '.Range("C1:C100").SpecialCells(xlCellTypeBlanks).Delete xlUp
    End With
 End Sub

(TAKA) 2019/01/18(金) 16:37


 参戦!
    Sub a()
        Dim a As Variant
        a = [=TRANSPOSE(IF((A1:A100-B1:B100)/B1:B100<0.1,A1:A100,CHAR(2)))]
        a = Filter(a, Chr(2), False)
        Range("C1").Resize(UBound(a) + 1).Value = Application.Transpose(a)
    End Sub
(稲葉) 2019/01/18(金) 17:51

ねむねむ様

返信が遅くなって申し訳ありません。
関数でできたんですね。。。
勉強不足でした。
早速の返信助かりました!
ありがとうございます。
(Aoi) 2019/01/21(月) 13:12


稲葉様

こちらも返信が遅くなり申し訳ありません。
VBAでの解決法のご助言ありがとうございます!
関数とVBAと、対象データ数や条件式の複雑さなどによって使い勝手とともに使い分けてみたいと思います。
今後とも勉強させて頂きたいと思います。
よろしくお願いします。
(Aoi) 2019/01/21(月) 13:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.