0

特定の列(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

追加情報:

  1. 列Gは、いくつかの項目を含むデータ検証リストをドロップダウンします。完全なリストは別のワークシートにあります。ユーザーは各広告申込情報にアクセスして、特定のカテゴリから選択します。

  2. 問題の他の列には、広告申込情報の名前、カテゴリ(列Gと同じ)、金額、日付が含まれています。

  3. 上記のコードは、「ESIプロジェクトデータ」ワークシートのリストをループし、セルGの値で行を検出します。現在、この例では、キーワードがセルG(「カード」)にあるたびに行全体をコピーします。私はそれを使用して、そのキーワードでグループ化された個々のリストを生成しています。現在のように.EntireRow関数を使用するのではなく、個々のセルをプルするだけです。私はそれを行う方法がわかりません。

お時間をいただきありがとうございます!

4

2 に答える 2

1

テストされていません...

Sub AlonsoApprovedList()

Dim cell As Range
Dim rngDest As Range
Dim i As Long
Dim arrColsToCopy

    arrColsToCopy = Array(1, 3, 4, 5)
    '----For every cell in row G on the ESI Project Data sheet----'
    Set rngDest = Worksheets("Alonso Approved List").Range("A3")

    Application.ScreenUpdating = False

    For Each cell In Worksheets("ESI Project Data").Range("G6:G5000").Cells

        If cell.Value = "Card" Then

            For i = LBound(arrColsToCopy) To UBound(arrColsToCopy)
                With cell.EntireRow
                    .Cells(arrColsToCopy(i)).Copy rngDest.Offset(0, i)
                End With
            Next i

            Set rngDest = rngDest.Offset(1, 0) 'next destination row

        End If

    Next cell

    Application.ScreenUpdating = True

End Sub
于 2013-02-04T19:28:29.837 に答える
0

こんにちは、ボタンをクリックして特定のセルを別のブックにコピーするために使用できるコードがあります。

これが私がやろうとしていることです、

ワークブック1から次のセルから情報をコピーする必要がありますセルA40からA69に列Bの情報がありますセルb2、b3、b4、b8、9、10、11、12、13、14、15に列Bの情報がありますb40からb69セルb2に列Dの情報があり、セルb1、b2、b3、b4に列Gの情報があります

このすべてを、この特定の情報に割り当てられた同じセルを持つworkbook2に送信する必要があります。

私が自分自身を明確にしたことを願っています。

于 2013-10-03T19:08:08.163 に答える