Gizport
1 回答
0
Share (facebook)
337
view
全般

excelの使い方についての質問(VBでも可) EXCEL上に数字の...

excelの使い方についての質問(VBでも可) EXCEL上に数字のデータがあります。
以下の検索条件より所定範囲内のデータのみ抜き取りたい。

宜しくお願いします。
VBのプログラムでもOKです。

【データの構成】
A列...1,2,3,5,8,10,100,101,102,105,200,201,202,204,208,300,302,305,308,309
B列...ランダムな数値の羅列
C列...ランダムな数値の羅列

【データの検索方法】
A列の数値が50以上大きくなる箇所を検索(上記A列の10から100、105から200、208から300)

【データの抽出方法】
上記の検索でA列の数字が50以上大きくなる手前の行までの間のデータをB列、C列も一緒に抽出
したい。

具体的には、以下の4グループのデータをそれぞれ抽出したい。

1,2,3,5,8,10(及びこの行のB列、C列のデータ)
100,101,102,105(及びこの行のB列、C列のデータ)
200,201,202,204,208(及びこの行のB列、C列のデータ)
300,302,305,308,309(及びこの行のB列、C列のデータ)
Yahoo!知恵袋 3686日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
標準モジュールです
該当シートをアクティブにしてマクロを実行してください
F1 にグループ1
K1 にグループ2・・・となります
シートごとに分けて抽出がよければ、補足してください

-------------------------------------------------------------------
Sub test()

Dim sh As Worksheet
Dim i As Long
Dim ii As Long
Dim iii As Long
Dim cnt As Long
Dim lastrow As Long
Dim boo As Boolean

Set sh = ActiveSheet
With sh

lastrow = .Range("A1").End(xlDown).Row
i = 1
ii = 6
iii = 2
cnt = 1

Do Until i > lastrow
boo = True
.Cells(1, ii) = "グループ" & cnt
Do While boo = True
If i > lastrow Or .Cells(i + 1, 1) - .Cells(i, 1) > 50 Then
.Cells(iii, ii).Resize(, 3) = .Cells(i, 1).Resize(, 3).Value
i = i + 1
boo = False
Else
.Cells(iii, ii).Resize(, 3) = .Cells(i, 1).Resize(, 3).Value
i = i + 1
iii = iii + 1
End If
Loop
ii = ii + 5
iii = 2
cnt = cnt + 1
Loop
End With

End Sub
-------------------------------------------------------------------
Yahoo!知恵袋 3623日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
64
Views
質問者が納得標準モジュールです 該当シートをアクティブにしてマクロを実行してください F1 にグループ1 K1 にグループ2・・・となります シートごとに分けて抽出がよければ、補足してください ------------------------------------------------------------------- Sub test() Dim sh As Worksheet Dim i As Long Dim ii As Long Dim iii As Long Dim cnt As Long Dim...
3686日前view64

取扱説明書・マニュアル

1247view
http://cweb.canon.jp/.../vb-c300sg3.pdf
54 ページ2.68 MB
もっと見る

関連製品のQ&A