【发布时间】:2013-12-05 16:06:40
【问题描述】:
我有一个如下所示的 excel“Sheet4”:
然后是第二个“Sheet3”,如下所示:
我需要做的是构建一个宏来查找 sheet1 中空白价格值的代码,并从 sheet2 复制不同颜色的多个价格,以便 sheet1 中的最终读数如下所示:
名称 成本代码 类型 项目 1 10 美元一个 项目 2 10 美元 CLR A 项目 2 $12 GRY A 项目 2 $17 GYX A 项目 3 $15 B 项目 4 12 美元 CLR B 项目 4 14 美元 GRY B 项目 4 $20 GYX B 项目 5 $15 Bsheet2 中的所有颜色和价格都在单独的单元格中。
我只需要每个颜色相同的颜色(即需要复制 CLR、GRY 和 GYX),但 sheet2 中的某些组没有所需颜色之一(可能只有 CLR 和GYX 没有 GRY)。
我已经尝试了下面的代码,但我认为这很难,因为我正在使用 Offset 引用“项目”范围内的一个单元格,并且它说“对象不支持此属性或方法”。我需要能够将从 Sheet3 获得的值粘贴到 Sheet4 的正确列中; B 列和 C 列。
如果我可以让下面的代码工作,我唯一要做的就是为每个相应的颜色添加 Elseif 语句,然后让它插入行并复制要填充的行。
子产品Test()
Dim st1, st2 As Worksheet
Set st1 = Sheets("Sheet4")
Set st2 = Sheets("Sheet3")
Dim items As Range
Set items = st1.Range(st1.Range("A1"), st1.Range("A" & Rows.Count).End(xlUp))
Dim item As Range
For Each item In items
Dim cost As String
Dim code As String
Dim t As String
cost = item.Offset(0, 1).Value
code = item.Offset(0, 2).Value
t = item.Offset(0, 3).Value
If cost = "0" Then
Dim prodPos As Range
Dim prodColors As Range
Dim prodColor As Range
Dim colorcost As String
Dim color As String
Set prodPos = st2.Cells.Find(What:=code, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
Set prodColors = Range(prodPos.Offset(1, -1), prodPos.Offset(6, 6))
For Each prodColor In prodColors
If prodColor.Value = "CLR" Then
color = prodColor.Value
colorcost = prodColor.Offset(0, 1).Value
'This is where its encountering a problem
Worksheets("Sheet4").item.Offset(0, 2).Activate
ActiveCell.Value = color
st1.item.Offset(0, 1).Value = colorcost
End If
Next prodColor
End If
Next item
结束子
【问题讨论】:
-
要求代码的问题必须表明对所解决问题的最低理解。包括尝试的解决方案、它们为什么不起作用以及预期的结果(来自:Help Center)。另请参阅:Stack Overflow question checklist。因此,从您的代码开始,发布它,然后告诉我们您遇到的问题。
-
对此感到抱歉,因为我试图按顺序做很多事情,每次尝试进入它时我都有点不知所措。当我取得一点进展时,我将处理 brWHigino 发布的内容并编辑我的帖子。