如果范围单元格包含任何数字或空白单元格,则

时间:2019-02-28 02:51:11

标签: excel vba

我正在尝试创建一个this之类的VBA项目,但是我很难使用LIKE函数,并且当我按下运行按钮时似乎什么也没发生。

我要做什么

  • 如果第一位数字是B4:B245中的数字或空白单元格,则输入D4:245范围内的文本。
  • 如果数字的最后一位在C4:C245中为偶数,则在D4:D245范围内输入文本。

更多信息

  • 产品代码已导入
  • 使用LEFT函数查找“产品代码的第一位”
  • 使用RIGHT函数查找“产品代码的数字”

我在excel和VBA中的当前职位:

Sub number()

Dim first As Range
    Set first = Range("B4:B259")

Dim numeric As Range
    Set numeric = Range("C4:B259")

Dim DColumn As Range
    Set DColumn = Range("D4:D259")

For Each first In DColumn
    If first Like " " Then
        DColumn = "Invalid Part Number"
        DColumn.Interior.ColorIndex = 6
End If
Next

End Sub

1 个答案:

答案 0 :(得分:2)

下面的宏将执行3个测试,并且每个测试都会获得自己的输出。

  1. 检查数字或空白的第一个字符
  2. 检查偶数结束字符
  3. 检查奇数结尾字符

这些测试不是一致的-输出将为1,或者为无。一旦测试语句为TRUE,循环将针对该单元格结束,其他值将不进行测试。

例如,当上面的#1和#2为true时,此宏将不会为您提供输出。它只会告诉您#1是否为真。


此代码不需要您拆分产品代码。该宏将按原样与他们一起使用

Sub MyNum()

Dim xCell As Range, Product_Code As Range
Set Product_Code = Sheets("Sheet1").Range("A2:A9") '<-- Update sheet name

For Each xCell In Product_Code
    If IsNumeric(Left(xCell, 1)) Or Left(xCell, 1) = " " Then
        xCell.Offset(0, 1) = "Invalid Product: Char 1 = Numeric or Null"
    ElseIf Right(xCell, Len(xCell) - 1) Mod 2 = 0 Then
        xCell.Offset(0, 1) = "Even Ending Range"
    ElseIf Right(xCell, Len(xCell) - 1) Mod 2 <> 0 Then
        xCell.Offset(0, 1) = "Odd Ending Range"
    End If
Next xCell

End Sub

enter image description here

相关问题