- 締切済み
エクセルのマクロで困ってます
エクセルのマクロで(VBAで) シートにデータが羅列されています。 その中から、条件を満たすものを抜き出したいのですが。 ココまでは条件の合うものを抽出って方法が考えられると思います。 でも、その条件の設定方法を、A1セルに入った数字ってしたいとき。 どのようなプログラムを組んだらいいのか教えてください。 抽出まで一連のプログラムを書いていただけるとありがたいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 こんな感じかな? Sub FindNumbers() 'A1 のデータより小さいデータを1列に出力するマクロ Dim rng As Range Dim sRng As Range Dim ar() As Long Dim c As Variant Dim i As Long Set rng = ActiveSheet.UsedRange Set sRng = rng.SpecialCells(xlCellTypeConstants, xlNumbers) If Not sRng Is Nothing Then For Each c In sRng.Cells If c.Value < Range("A1").Value And Not Range("A1") Is c Then ReDim Preserve ar(i) ar(i) = c.Value i = i + 1 End If Next c End If 'データ列を1つ空けて出力 Columns(rng.Columns.Count + 2).Resize(UBound(ar()), 1).Value = _ WorksheetFunction.Transpose(ar()) Set rng = Nothing: Set sRng = Nothing End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >抽出まで一連のプログラムを書いていただけるとありがたいです。 一連のっていうのは、ちょっと辛いですね。意味がはっきりしないからです。 >シートにデータが羅列されています。 >その中から、条件を満たすものを抜き出したいのですが。 -どこにですか? >ココまでは条件の合うものを抽出って方法が考えられると思います。 >でも、その条件の設定方法を、A1セルに入った数字ってしたいとき。 A1 に入っている数字なら、その数を数えて、それを並べるだけですから、 With ActiveSheet i= WorksheetFunction.CountIf(.UsedRange, .Range("A1").Value) Sheet2.Range("A1").Resize(i).Value = .Range("A1").Value End With もう少し、具体的に、どのようにするのか分らないと、話が進みませんね。
お礼
ああ!すみません。 でも、答えていただけてありがたいです。 ありがとうございます。 よろしければもうすこし、初心者にお付き合いください!! 補足をNo1の方のところにつけさせていただきました。 これで、もう少し具体的になったでしょうか? またよろしくお願いいたします。
- stolichnaya
- ベストアンサー率22% (13/58)
この文章だと何を求めているのか良くわかりませんが。。。 もしかしたらこれかな? ISNUMBER(A1) A1の値が数値として解釈できればTRUE、解釈できなければFALSEを返します。
補足
すみません!! 初心者で・・・どう書いたらわかりやすいのかもわからなかったのです。 シートの中に数値のデータを並べておきます。 (これは、実験データです) その数値データの中から、ある条件を満たすものを同じシートの中に抜き出して書いてほしい。と思っています。 条件は、「A1の場所に入れた数値より小さい」と設定したいと思っています。 なので、 ・A1の中に入っているのは数値だと認識させたい ・条件として設定するために「A1より小さい」とプログラムさせたい ・条件にあうデータを抜き出したい ・その抜き出した結果を、元からあるデータを同じシート上に出したい この作業ができるようなプログラムを知りたいと思っています。 わかりにくくてすみません・・・
お礼
2回目のご回答ありがとうございます!! と、あと、初心者にお付き合いいただき本当にありがとうございます!! さっそく、やってみます。 もし、もしも。思ったとおりにできなければ、また具体的に質問させていただきます。 そのときはまたよろしくおねがいいたします。