Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据单元格值和其他使其更复杂的内容创建图纸_Excel_Vba - Fatal编程技术网

Excel 根据单元格值和其他使其更复杂的内容创建图纸

Excel 根据单元格值和其他使其更复杂的内容创建图纸,excel,vba,Excel,Vba,如果我打电话给一个广播节目,我会说,“好久不见的听众……第一次打电话的人”。很长一段时间以来,我从这个网站学到了很多东西,但我从来没有遇到过一个直到今天才找到答案的场景 我需要在一个循环中执行多个步骤,而我的大脑却在绞尽脑汁想如何去做,因为我需要在同一个循环中从不同的列、不同的表中提取内容。我希望这里的才华横溢的头脑能给混乱带来一些秩序 注意:我知道如何在真空中单独完成这些事情。所有的一切加在一起…所有的条件…让我不知所措,以至于我不知道从哪里开始 我需要做的是: 查看名为“数据”的工作表 为“

如果我打电话给一个广播节目,我会说,“好久不见的听众……第一次打电话的人”。很长一段时间以来,我从这个网站学到了很多东西,但我从来没有遇到过一个直到今天才找到答案的场景

我需要在一个循环中执行多个步骤,而我的大脑却在绞尽脑汁想如何去做,因为我需要在同一个循环中从不同的列、不同的表中提取内容。我希望这里的才华横溢的头脑能给混乱带来一些秩序

注意:我知道如何在真空中单独完成这些事情。所有的一切加在一起…所有的条件…让我不知所措,以至于我不知道从哪里开始

我需要做的是:

查看名为“数据”的工作表 为“数据”工作表(不包括第1行/标题)B列中的每个值创建一个新工作表,并将工作表命名为相同的名称

然后,在我们刚刚创建的工作表上,从另一个现有工作表复制/粘贴所有数据(完整范围w/标题),其中工作表名称=我们刚才查看的同一行A列中的值,并将其他一些数据从“数据”工作表复制到新工作表。头晕

“数据”表的例子:它不允许我插入图像,因为我没有足够的声誉点数。这里有一个指向示例图像的链接

创建的第一张新图纸将命名为“BBB”(取自B2)。然后,使用第一行中的其他数据,我们希望找到工作簿中已经存在的名为“Brown”(取自E2)的工作表。从“棕色”复制所有内容,并将其粘贴到新的“BBB”表中

现在,虽然仍在循环中的这一行上,刚刚填充了新的工作表,但我们现在希望将值从A2(“大棕色球”)复制到F2处的新工作表(“BBB”),并填充该列的整个范围(就像我双击单元格句柄一样)

然后,最终,我们可以循环回到下一行“位置”表,并重复相同的过程,直到填充的行用完为止

我对这个解释的复杂性感到非常抱歉,但这正是我发现自己需要问这个问题的原因!我就是无法控制自己

任何帮助都将不胜感激

编辑:下面的回答者问了一些好问题,因为他的头也在旋转!我的回答可能对其他人也有帮助

您可以尝试以下方法:

Sub Test()
    Dim r As Range, c As Range, lrow As Long
    With ThisWorkbook
        Set r = .Sheets("Data").Range("B2", "B4")
        For Each c In r
            .Sheets(c.Offset(0, 3).Value).Copy After:=.Sheets(.Sheets.Count)
            With ActiveSheet
                .Name = c
                lrow = .Range("A" & .Rows.Count).End(xlUp).Row
                .Range("F2:F" & lrow).Value = c.Offset(0, -1)
            End With
        Next
    End With
End Sub

这就是你想要的吗?HTH.

您在这方面遇到了什么问题?我是说你试过什么吗?让我们专注于具体问题,而不是为您解决和创造一切。如果我理解正确(在后面的部分我已经感到头晕),你只需要一个循环。如果我没弄错的话,再来一次。呵呵。欢迎来到我的头晕!我知道如何创建新的工作表,如何命名它们,以及如何将数据从一个现有工作表移动到另一个现有工作表。它的复杂性在于,根据某个单元格中的内容引用如此多的不同位置,以获得最终产品——并使用其他值来确定产品的去向(所有的“如果这个……然后那个”)——是的,这就是我感到头晕的地方,只是盯着显示器不知道从哪里开始。回答你的另一个问题,是的,这只是一个大循环,有很多嵌套的“东西”。好吧,为什么不重命名这些工作表,然后填充F列呢?你为什么要复制所有东西?您是否需要以某种方式保留原始工作表?顺便说一句,我对你如何构造你的问题感到头晕。你至少应该提供你已经尝试过的(你的代码)以及你无法使用的部分。另一个好问题。这是因为现有的6张工作表中的数据被复制到45张新工作表中(这是实际总数…我的示例中只有3张),这取决于每个新工作表应该接收的数据…这是基于循环中每行的A列值。现有图纸作为主数据源,需要保持其当前形式。新的工作表只接收数据表的副本,以适用于它的工作表为准。新的工作表稍后将作为自己的工作簿摘录给某些人。我已经知道怎么做了。哇,这是一些非常有效的代码!我甚至理解其中的逻辑…我想。有一件事我没有掌握,那就是顶部的.Range(“B2”,“B4”)。我只是试着一步一步地运行来找出它,但我得到了一个运行时错误“9”:下标超出了范围,它会调试到循环中的第一行。Sheets(c…..有什么想法吗?@rushjc Range(“B2”,“B4”)从数据表中得到正确的工作表名称吗?在示例屏幕截图中(这就是BBB、SMC、TGB所在的位置)。这只是范围的另一种形式(“B2:B4”)。我对其进行了硬编码,但您可以使其动态化。如果E列中的内容与您现有的母版纸名称(棕色、红色、绿色等)不完全相同,您将获得一个运行时因为excel无法复制一个不存在的工作表。你说得对。第一个主控中有一个输入错误。哇,我非常感谢你坚持我的观点。我从来没有用11行代码就能做到这一点。太棒了!@rushjc Cool。很高兴它能帮上忙。顺便说一句,下次尝试构造更好的问题。用长句提问小灵通经常是关闭的。可以解释一下,但不要忘了包括你尝试过的东西,这样我们可以专注于具体问题。简单的插图也可以帮助我们。会的。谢谢你的提示。我已经习惯了作为读者/学习者而不是询问者。再次,非常感谢。我真的很敬畏这可以用11行来完成!!!