【问题标题】:Replace data in cells based on content of another cell根据另一个单元格的内容替换单元格中的数据
【发布时间】:2020-04-08 20:29:52
【问题描述】:

我对 VBA 并不太熟悉,而且我正在努力编写一个可以查看整个范围的宏。我想自动化一种方法来替换单个工作表中特定列中具有 Null 的单元格。

我在使用特定单元格值的 IF Then Else 语句方面取得了一些有限的成功,但无法确定使用单元格范围。 即

IF Range("B1").Value = "Null" And Range("A1").Value = ("*book") Then Range("C1").Value = ("book")

以下是数据集的示例:

A 列是书籍、桌子和椅子的类型。每个项目的描述中都有单词 Book、Table 或 Chair,B 列应该有一个类别描述,但某些单元格显示为 Null。我想要做的是,如果 B 列中的值显示为“Null”,则根据 A 列中的值将 Book、Table 或 Chair 的描述输入 C 列。如果 B 列中的值不是 Null,则执行没有。这只是一个例子,真实的数据集大约有 25,000 行。

【问题讨论】:

  • Range("A1").Value like "*book"
  • 查看 for/next 循环或 do 循环以依次读取和更改每一行。

标签: excel vba if-statement replace


【解决方案1】:

这是一个非常粗略的代码示例。有很多方法可以解决这个问题。

Sub test()

Dim i As Integer
Dim lRow As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Sheet1")
' get the row number of the last row with data in column A
lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
' Start in row 2
For i = 2 To lRow
    If Range("B" & i).Value = "Null" And Range("A" & i).Value Like "*book" Then
        Range("C" & i).Value = ("book")
    End If
Next i

End Sub

编辑:调整代码以动态确定数据的最后一行。

【讨论】:

  • 谢谢,这行得通!唯一的问题是行数会有所不同,但总是超过 20,000 行。有没有办法动态调整该值?
猜你喜欢
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多