VBA如何根据同一行中其他两个单元格的内容编辑单元格内容

时间:2016-03-08 11:37:33

标签: vba excel-vba replace shopify shipping

我需要帮助创建一个宏来清理包含产品销售信息(包括需要使用的送货方式)的csv表。我们的产品中有大约10种无法通过我们通常的运输方式发送,我需要覆盖分配给包含这些产品的订单的运输方式。

  • A栏是订单号
  • B栏是购买的产品
  • C列是送货方式

如果有人在一个订单中购买了多个产品,则订单号在下一行中重复出现,则出货方式仅在第一行显示该订单号,并且以相同顺序购买的每个连续产品仅添加一个新行B栏中的产品名称

我需要使用VBA来检查B列中10个左右的特定产品的列表,并更新整个订单的发货方式(C列中最高的单元格在单元格A中具有相同的值),如果它包含这10种产品中的一种。

我认为它需要做这样的事情:

  1. 查看B列并搜索一串文字
  2. 如果单元格与搜索条件匹配,请查看同一行中A列中的值
  3. 在A列中找到此值的第一个实例
  4. 使用新的送货方式
  5. 替换同一行中B列中的内容

    我需要在循环中使用它,以便它为电子表格中B列中的每个搜索字符串实例执行此操作。

    我希望这个问题很明确,我已经搜索过了,无法找到这个问题的答案。欢迎任何帮助或替代修复。

1 个答案:

答案 0 :(得分:0)

根据以下屏幕截图中的设置和结果,尝试以下代码:

Sub test()

Dim pRange As Range
Dim nShip As Range

Set pRange = Range("E2")
pRange.Select

While ActiveCell.Value <> ""

Range("B2").Select

While ActiveCell.Value <> ""

If ActiveCell.Offset(0, -1).Value <> ActiveCell.Offset(-1, -1).Value Then

Set nShip = ActiveCell.Offset(0, 1)

End If

If ActiveCell.Value = pRange.Value Then

nShip.Value = pRange.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select

Else

ActiveCell.Offset(1, 0).Select

End If

Wend

Set pRange = pRange.Offset(1, 0)
pRange.Select

Wend

End Sub

开始清单:

enter image description here

宏之后的结果:

enter image description here