excel vba代码,用基于相邻单元格编号范围的文本替换空单元格

时间:2014-06-08 01:34:27

标签: excel vba excel-vba

请帮助我,我对excel感到沮丧。可能是因为我对它不那么好。我的任务是以下。获取列c中的所有空白单元格,引用列b中相邻单元格中的值,然后在单元格中打印一个语句。

我试过这个功能无济于事。

= IF(AND(C3 =“”,0< B3< 5000),“订购更多”,“不订购”)

我收到了一个循环错误。所以我认为我必须要使用VBA。

以下是我到目前为止的代码片段:

Worksheets("Sheet1").Activate

For Each rw In Sheet1.Rows
If rw.Columns("C") = "" and range.rw.Columns("B")

我不确定如何让一切顺利。我甚至都不知道这是否正确。我一直试图利用互联网提供帮助,但这更令人困惑。

2 个答案:

答案 0 :(得分:0)

我认为你不想要VBA 你的公式应该是

=IF(AND(C3 = "", 0 < B3, B3 < 5000), "Order More", "Don't Order")

如果您收到循环错误,那是因为您将公式放在B3或C3中。 它逻辑上是A3还是D3?

答案 1 :(得分:0)

以来将此作为回复发布
  • 在评论
  • 上解释它很麻烦
  • 经过测试,适用于Excel 2010。

    Sub test()
    
    Dim lFirstBlank As Long, lLastRow As Long
    Dim rRange As Range
    
    lLastRow = Cells(Rows.Count, 3).End(xlUp).Row
    lFirstBlank = _
    Range("C3:C" & lLastRow).SpecialCells(xlCellTypeBlanks).Cells(1, 1).Row
    
    Set rRange = Range("C" & lFirstBlank & ":C" & _
        lLastRow).SpecialCells(xlCellTypeBlanks)
    
    rRange.Formula = _
    "=IF(AND(B" & lFirstBlank & ">0,B" & lFirstBlank & "<5000)," & Chr(34) & _
    "Order More" & Chr(34) & "," & Chr(34) & "Don't Order" & Chr(34) & ")"
    
    rRange.Value = rRange.Value
    
    
    End Sub
    

问题是我们需要找到第一个空白单元格并在那里输入相对于该单元格的引用(第一个空白),正如我从您最新的回复中所理解的那样。例如,如果第一个空白单元格为C5,则公式应引用C5B5,而不是C3。上面的代码按预期工作,假设我们正在查看的工作表是ActiveSheet(即,它被激活)。

修改

如果我们要删除对列B的依赖关系,我们可以添加一行

rRange.Value = rRange.Value

这将删除公式依赖项,并仅保留值(例如仅粘贴值)。

我没有把公式写成

的原因
=IF(AND(C3 = "", 0 < B3, B3 < 5000), "Order More", "Don't Order")

就是那个

  • 它会给我们一个循环引用错误,因为我们使用C3的值来确定C3的值。
  • 即使我们避免(或忽略)循环引用,它似乎也没有完全符合您的要求:您希望将逻辑0 < B3 < 5000应用于空白单元格你在问题中提到,并返回&#34;订购更多&#34;或者&#34;不要订购&#34;。所以我的理解是不应该触摸非空白单元格,而上面的公式将覆盖写在非空白单元格上的任何内容并写在那里&#34;不要订购& #34;

我希望这有帮助!