プロが教える店舗&オフィスのセキュリティ対策術

データを入力した、入力履歴のシートがあります。
A:ID番号
B:分類
C:大項目
D:小項目
という列分けがされており、G列にデータ(数値)を入力します。
この形式の場合、A-B-C-Dでリストを作り、しかもGにデータ入力が
あるものだけを抽出したいのですが、

コードをどのようにすればよいのでしょうか?
ご教授願いますm(__)m

A 回答 (3件)

こんにちは


なさりたい事がイマイチわかりませんが、下記のようなもので改造出来ますか

Sub a()
Dim Q_list As New Collection
Dim Q_Item
Dim i As Long
Dim mykey As String
With ActiveSheet
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
If .Cells(i, "G") <> "" Then
mykey = .Cells(i, 1) & "-" & .Cells(i, 2) & "-" & .Cells(i, 3) & "-" & .Cells(i, 4)
Q_list.Add mykey, CStr(mykey)
If Err.Number = 0 Then
Q_Item = Q_Item & vbCrLf & mykey
End If
On Error GoTo 0
End If
Next
End With
MsgBox Q_Item
End Sub

&データを作るところはループにしても良いかと、、
    • good
    • 0
この回答へのお礼

1番実現したいことに近い形の答えを頂けました。
ありがとうございましたm(__)m

お礼日時:2021/04/03 11:29

G列には必ず数値のみが入っていると言うのなら、まずG列を『空白以外』でフィルターをかければ宜しいのでは?



またはリストを作りたい事が本来の目的なのでしょうか?
    • good
    • 0
この回答へのお礼

上手く説明できずに申し訳ないです。
先ず、リストを作ることが必要でした。

お礼日時:2021/04/03 11:30

こんにちは



G列が直接入力の数値(=関数式などではない)と仮定してよいのであれば、

With Worksheets(対象シート)
For Each c In .Columns(7).SpecialCells(xlCellTypeConstants, xlNumbers)
' **** 抽出処理
Next
End With

とすれば、数値入力のあるG列のセルに対してループすることができますので、それぞれの行に対して抽出処理を行えばよいでしょう。
※ 変数 c は、G列の各セル(=Range)となります。
※ 対象セルが存在しない場合は、SpecialCellsメソッドでエラーが発生しますのでご注意。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりましたm(__)m

お礼日時:2021/04/03 11:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!