特定の列(G)の各行の値に基づいてリストを生成する方法に取り組んでいます。現在、リストは行全体をコピーでき、完全に機能します。列Gに必要なテキスト(「カード」)が含まれている場合はすべての行をプルし、ギャップのない別のスプレッドシートのリストに配置します。
問題は、行全体ではなく、「カード」を含む各行のいくつかの列の情報のみをリストに含めることです。
以下のコードで、.EntireRow関数を使用して行全体をコピーするのではなく、行から特定のセルをプルする方法はありますか?
明確にするために、このスプレッドシートは複数の異なるユーザーによって定期的に更新されるため、情報は静的ではありません。行は頻繁に追加および変更され、場合によっては削除されます。そのため、元のシートから新しいリストにセルの値をコピーすることはできません。
Sub AlonsoApprovedList()
Dim cell As Range
Dim NewRange As Range
Dim MyCount As Long
Dim ExistCount As Long
ExistCount = 0
MyCount = 1
'----For every cell in row G on the ESI Project Data sheet----'
For Each cell In Worksheets("ESI Project Data").Range("G6:G5000")
If cell.Value = "Card" Then
ExistCount = ExistCount + 1
If MyCount = 1 Then Set NewRange = cell.Offset(0, -1)
'----Sets up a new range to copy all data from the row if column G in that row contains the value in question----'
Set NewRange = Application.Union(NewRange, cell.EntireRow)
MyCount = MyCount + 1
End If
Next cell
If ExistCount > 0 Then
NewRange.Copy Destination:=Worksheets("Alonso Approved List").Range("A3")
End If
End Sub
追加情報:
列Gは、いくつかの項目を含むデータ検証リストをドロップダウンします。完全なリストは別のワークシートにあります。ユーザーは各広告申込情報にアクセスして、特定のカテゴリから選択します。
問題の他の列には、広告申込情報の名前、カテゴリ(列Gと同じ)、金額、日付が含まれています。
上記のコードは、「ESIプロジェクトデータ」ワークシートのリストをループし、セルGの値で行を検出します。現在、この例では、キーワードがセルG(「カード」)にあるたびに行全体をコピーします。私はそれを使用して、そのキーワードでグループ化された個々のリストを生成しています。現在のように.EntireRow関数を使用するのではなく、個々のセルをプルするだけです。私はそれを行う方法がわかりません。
お時間をいただきありがとうございます!