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

VBA how do I edit cell contents based on contents of two other cells in same row

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

如果有人在一个订单中购买了多个产品,订单号在下一行重复,送货方式仅显示在带有该订单号的第一行,并且在同一订单中连续购买的每个产品只添加一个新行B列中的产品名称

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

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

  1. 查看 B 列并搜索一串文本
  2. 如果单元格符合搜索条件,请查看同一行中 A 列中的值
  3. 在 A 列中找到该值的第一个实例
  4. 将同一行B列中的内容替换为新的送货方式

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

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

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

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

首发名单:

宏后的结果: