宏:给定行X将特定单元格从该行复制到新工作表

时间:2013-02-04 18:57:55

标签: excel vba excel-vba

我正在研究一种基于给定列(G)中每行的值生成列表的方法。目前,该列表可以复制整行并完美运行。如果列G包含所需的文本(“卡片”),它会拉出所有行,并将它们放在另一个没有间隙的电子表格的列表中。

问题是我希望列表只包含每行包含“Card”的几列中的信息,而不是整行。

有没有办法让我的代码在下面从一行中提取特定单元格而不是使用.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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你好,有一个代码可以用来通过点击一个按钮将特定的单元格复制到另一个工作簿。

这就是我想要做的事情,

来自工作簿1我需要从以下单元格中复制信息 我在A40到A69单元格上有B列信息 我在单元格b2,b3,b4,b8,9,10,11,12,13,14,15和b40到b69上有B列信息 我在单元格b2上有D列信息, 我在单元格b1,b2,b3,b4上有列G信息

所有这些我需要将它发送到workbook2,它具有分配给这个特定信息的相同单元格。

希望我清楚自己。