【问题标题】:How to put values in last row if the value in certain range is certain word using VBA?如果某个范围内的值是使用 VBA 的某个单词,如何将值放在最后一行?
【发布时间】:2018-04-18 12:10:33
【问题描述】:

所以,我有一系列单元格,从 M 到 AL,它们显示某些数据的值“真”或“假”。我需要一个代码逐行遍历该范围,当找到一个值“False”时,将值 1 放入 AN 列并为该行着色。到目前为止,这是我的代码:

Set r = Sheet7.Range("W:AL")
For i = 5 To RowCount
With r.Cells(i)
If .Value = "False" Then
    .EntireRow.Interior.Color = 15773610
    Cells(i, "AN").Value = 1
End If
End With
Next i

但它不起作用。我可能错过了一些东西,但我无法弄清楚它是什么。任何帮助将不胜感激。

【问题讨论】:

  • 为什么选择 VBA?在 AN 中使用一个公式,如果该行中有任何 False,则为 1,否则什么也没有。然后使用条件格式为行着色
  • 另外,在你的问题中你说 ...from M to AL... 并且你的代码说"W:AL"。哪一个是正确的?
  • @FoxfireAndBurnsAndBurns M 到 AL 是正确的,我的错误.. 我该如何写这个公式?

标签: vba excel


【解决方案1】:

我的示例是使用较少的数据,只需根据您的需要调整公式即可。 另外,请注意我的 Excel 是西班牙语的,但我会翻译公式。

对于这个答案,我们将使用Array Formulas

我的数据只是A1:C17。一些单元格包含一个数字,而其他单元格包含一个 False 值(西班牙语中的 False 是 False,检查图像):

好的,第一步是在 AN 列中,如果该行中的任何单元格为 False,则使用数组公式显示 1 值,否则不显示任何值。就我而言,我将该公式放在 D 列中。我使用了=IF(A1:C1=FALSE;1;"")。向下拖动。

非常重要:键入此公式时,请勿按 Enter。您必须按 CTRL+SHIFT+ENTER,使其成为数组公式。如果你不这样做,它就会失败。应用公式后,我在 D 列中得到了这个结果:

请注意,只有具有 False 值的行在 D 列中提高 1。其余单元格为空白。

第二步,条件格式化。只需创建一条规则,如果 D 单元格 = 1,则背景颜色为红色。请记住使用相对引用创建规则(仅阻止列,而不是行)以使其工作。我在规则中的公式是=IF($D1=1;TRUE;FALSE),规则是这样的:

最后的结果是这样的。如您所见,如果单元格 D 中的值为 1,它将为所有行着色。否则,它什么也不做:

希望这会有所帮助。根据您的需要进行调整。

【讨论】:

  • 感谢您的回答和帮助,但出于某种原因,这仅对我部分有效。我想出了一个使用 VBA 的解决方案。
  • 我不知道原因,所以我说“出于某种原因”。如果我知道的话,我很乐意让你知道它是什么。
【解决方案2】:

这是对我有用的解决方案,所以我希望它对其他人有帮助。

Set r = Sheet7.Range("M:AL")
For i = 5 To RowCount
With r.Cells(i)
If .Value = "False" Then
    .EntireRow.Interior.Color = 15773610
End If
End With
Next i
For i = 5 To RowCount
If Sheet7.Cells(i, "AL").Interior.Color = 15773610 Then
    Cells(i, "AN").Value = 1
End If
Next I

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多