当前位置: 首页 > 知识库问答 >
问题:

根据单元格值从工作簿复制和粘贴工作表到不同的工作簿

昌学
2023-03-14

我有一段巧妙的代码,它根据指定单元格中的特定文本输入隐藏/隐藏表。在Book1中的Sheet1中(比方说),如果我改变单元格A1中的文本(比方说文本是苹果、橘子等),我会在同一本书中的sheet2上得到某些表格(让我们称之为答题卡)。

现在,在另一本书中,我有一个表,其中包含所有可能的文本值(Apple,oranges,等等)。我想写一个代码,首先通过这个表,使值在book1.sheet1(“sheet1”)。range(“a1”)一步一步,从book1复制“答卷”。这样,最终的结果将是我拥有与book2加Sheet1中的产品数量一样多的页数。

Sub_fruits()

Dim data_old as WorkBook
Dim data_new as Variant
Dim i As Long, LR As Long
Dim ws as Worksheet

ThisWorkbook.Sheets("Sheet1").Activate 'code is in book2
msgbox (______) 'to ask for file name 'to open book1

data_new = Application.GetOpenFIlename()
Set data_old = Workbooks.open(data_new)

Set ws = ThisWorkBook.ActiveSheet 'sheet1 in book2, the one with the     table
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

For i= 1 to LR
    'go through each cell in the table in book2.sheet1,
    'make a1 in book1 equal to cell value  and keep generating data on sheet2.book1).
    data_old.Sheets("sheet1").Range("a1").Value = _ 
    ws.Sheets("Sheet1").Range("a" & i).Value 
    'select data sheet from book1
    data_old.Sheets("Sheet2").Select
    Selection.Copy
    ws.sheets("Sheet2").select
    Range("a1").select
    'paste it onto sheet2 in book2
    ActiveSheet.Paste ()
    .
    .
    .

我不能通过表,即,如果我的表是苹果,橘子和香蕉,我希望代码拿苹果,把它放在书本1,生成输出,复制它并粘贴到书本2。其他水果在新的床单上以此类推。代码给出一个下标超出范围的消息。

共有1个答案

姚臻
2023-03-14

data_old这里是代码中的book1,表就在这里。您需要遍历数据以获取要复制的每个值。使用if语句,可以设置要复制内容的目标范围,在本例中为target。希望这能有所帮助。

    Dim wb As Workbook
    Set wb = Workbooks.Add

    Dim target As Worksheet
    Set target = wb.Worksheets(1)
    target.Range("A1") = "Fruit"

    Dim cell As Range
    For Each cell In data_old.Range("A2", data_old.Range("A" & Rows.Count).End(xlUp))
        If cell.Value = "apples" Then
            target.Range("A" & Rows.Count).End(xlUp).Offset(1).Value = cell.Value
        End If
    Next cell
End Sub
 类似资料:
  • 我写了下面的代码,并不断地看到。我试图克服这个问题,但似乎没有任何效果。我正试图从一个工作簿复制整个工作表,并将其粘贴到另一个工作簿中:

  • 作为预先警告,我是使用VBA的新手。 我已经拼凑了以下代码来执行以下操作:1。找到工作表“intrastat”2。复制此工作表3的使用范围。作为值粘贴到新工作簿4中。重新格式化B5栏中的日期。将工作簿保存在原始工作簿的位置。 然而,只有当我将宏保存在原始工作簿中时,这才起作用。我需要的是能够有宏保存在一个不同的工作簿和运行宏,我需要能够选择“原始”工作簿从一个文件位置在我的硬盘。 有什么想法吗?

  • > sheet1:用户单击运行VBA的按钮。 第2:VBA选择第D列上的第一个非空白单元格 Range(“d”&rows.count).end(xlUp).offsed(1).select 多谢!

  • 标题或多或少概括了它。我试图使一个简单的宏打开,然后复制/粘贴数据从txt文件到一个新打开的工作簿。我有什么工作,但它粘贴到个人工作簿,在打开一个新的“book1”之前。我可以让它粘贴到Book1,但我只想让它粘贴到打开的第一个工作簿中,以防以后我想在同一个文件中添加更多数据。我对此相当陌生,所以任何帮助都将不胜感激!!

  • 我需要从一个工作簿复制棕褐色单元格并粘贴到另一个工作簿中。并且只需要在Excel中获取特定的单元格值。我实现了这一点,但只能粘贴到同一工作簿中的另一个工作表中。你能帮助我在粘贴数据到另一个工作簿上的一个特定的工作表,也应该粘贴的值在第二行,(即从第二行开始),因为第一行有标题在它。 源表标题: 项目阶段状态st Dt结束Dt预资源备注备注 Dest表标题: 现有代码:

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误