[英]Need to copy/paste row (x number of times) when cell value equals X
我正在尝试将Excel用于珠宝订购单。
在订单表(第1页)中,用户可以从格式化为下拉列表的单元格中选择一个数字,该数字表示一件珠宝中的宝石数量。 例如,如果戒指中有10颗宝石,则用户从下拉列表中选择10颗。
需要在订单表(Sheet1)中捕获10个宝石中每个宝石的详细信息。 例如,每块宝石将具有4个数据元素...宝石的类型,重量,颜色,切面...因此,我创建了所需的格式化的数据行(在Sheet2中),其中每个单元格都是用户下拉菜单从中选择。
我想创建一个控制按钮来执行以下操作:
删除工作表Sheet1中的19:150行,这将清除可能显示的所有先前的石头详细信息。
在Sheet1的单元格C13中查找值。此值将用于确定应粘贴/显示多少行
复制行,范围A2:Sheet2中的D2这是模板行数据,其中行中的每个单元格都是其自己的下拉列表。
Sheet1中B19中的粘贴行这是粘贴到订单中的模板行。
4a)粘贴与上述步骤(2)中的值一样多的行。
例如,如果步骤2中从上方开始的值为“ 3”,则石材详细信息行将需要在订单中粘贴3次。
我能得到的最远的是创建控制按钮和delete子句...
Private Sub CommandButton1_Click()
Sub deleteMultipleRows()
Rows("19:150").Delete
End Sub
对于delete语句,您可能应该使用Sheet1.Rows("19:150").Delete
因为那样可以确保excel知道要从中删除这些行的工作表。
您可以声明一个变量并为其分配一个值,如下所示:
Dim rowCount as Integer
rowCount = Sheet1.Range("C13")
如果您尝试记录用于复制和粘贴的宏,则应该看到一些示例代码。
注意:
如果结果看起来像这样:
Sheet1.Activate
Row(2).Select
Selection.Copy
您可以像这样组合这样的语句:
Sheet1.Row(2).Copy
由于大多数.Activate
命令以及.Select
和Selection.
都可以忽略Selection.
命令可以组合(大多数情况下应如此)。 工作表1 Sheet1.
在.Row(2)
告诉Excel具体使用Sheet1的第2行之前添加。 如果没有限定符(即仅Row(2)
,则Excel将从当前正处于活动状态的工作表中使用行2。
然后,您可以使用变量和工作表中的值遍历粘贴或复制/粘贴组合,如下所示:
Dim counter as integer
For counter = 1 to Sheet1.Range("C13")
'Add code for copy/paste here
Next counter
或者,如果已声明并分配了rowCount
变量,则可以在此处像这样使用它:
Dim counter as integer
For counter = 1 to rowCount
'Add code for copy/paste here
Next counter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.