【问题标题】:VBA: Searching for a value, replace value in different column but same rowVBA:搜索值,替换不同列但同一行中的值
【发布时间】:2015-11-18 01:41:57
【问题描述】:

在 B 栏中我有部件号,在 C 栏中我有序列号,在 E 栏中我有每个部件/序列组合的最近检查日期。我需要将检查日期更新为另一个单元格中引用的新日期。我试图添加一个图像,但它不会让我。我将尝试重新创建下面的 excel 图片:

例子:

  B                            C                D               E 

部件号___________序列号________________检验日期

75750-0001-0000_______________ 0002 ______________________9/15/2014

更新信息:

  O                            P                     Q                

部件号___________序列号_______检验日期

75750-0001-0000___________0004_______________8/24/2015

在 O5 中有一个零件号,在 P5 我有一个序列号,而 Q5 我有那个零件/序列的检验日期。我需要单击一个按钮并让检验日期更新列表中正确的零件/序列号。 (实际列表要大得多,因此手动执行会非常耗时)。没有重复或类似的东西。任何帮助将不胜感激。

【问题讨论】:

  • 循环直到找到所需的值,然后使用该行号引用要更改的单元格
  • 澄清一下,您想更新 Q 的检验日期的 E 列,其中设置的 O/P 的 Part/Serial 与 B/C 的 Part/Serial 匹配?
  • @jaimetotal,这是正确的。我不确定是否有内置方法可以做到这一点,而不是循环。谢谢。
  • @jordanlyman 检查答案。如果对您有帮助,请将其标记为答案 :)

标签: excel vba replace find


【解决方案1】:

这里的想法是创建一个双循环。搜索正确的行并更新日期。

Dim rng as Range
Dim rngInspection as Range

Set rng = Range("B2:EX") -- Range of the left table
Set rngInspection = Range("O2:P5") -- Range of the right table

For Each rowInspection In rngInspection.Rows

   Dim part as string, serial as string, inspectionDate as String
   part = rowInspection.Cells(1).Value
   serial = rowInspection.Cells(2).Value
   inspectionDate = rowInspection.Cells(3)

   For Each row in rng.rows
       If (row.Cells(1).Value = part And row.Cells(2).Value = serial) Then
            row.Cells(4).Value = inspectionDate
       EndIf
   Next row

Next rowInspection

【讨论】:

  • 它没有给出任何错误,但它不会影响 Excel 工作表的应有方式。是否需要将 rowInspection 声明为其他内容?我将 EX 更改为 E10,将 O2:P5 更改为 O2:Q2(只有一行)。任何建议
  • Dim rng As Range Dim rngInspection As Range Set rng = Range("B2:E10") ' 左表的范围 Set rngInspection = Range("O2:Q2") ' 右表的范围For Each rowInspection In rngInspection.Rows Dim part As String, serial As String,inspectionDate As String part = rowInspection.Cells(0).Value serial = rowInspection.Cells(1).Value InspectionDate = rowInspection.Cells(2).Value For每行 In rng.Rows If (Row.Cells(0).Value = part And Row.Cells(1).Value = serial) Then Row.Cells(3).Value = InspectionDate End If Next Row Next rowInspection
  • 对不起,我必须审查它。有一些问题(VBA 不会从 0 开始数组)。你能确认一下吗?
  • 太完美了。非常感谢。
猜你喜欢
  • 2015-02-15
  • 2020-08-04
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 2015-05-02
  • 1970-01-01
相关资源
最近更新 更多