如何使用 Excel VBA 为每个项目的不同范围创建 For 循环?

时间:2021-04-29 14:30:40

标签: excel vba

我每周都有任务,我会收到一个带有标准化标题的 .xlsx 文件,但数据本身会有所不同。相关的标题是:

A - 贷款号码,B - 抵押人名字,C - 抵押人姓氏,D - 抵押人出生日期

我已经设置了我的宏来执行一些初始手动步骤,即在 E 列中插入一个标题并为其指定一个名称,在我的标题中设置一个过滤器,过滤掉没有填充名字的抵押人( B 列)并过滤以仅显示 D 列中的空白单元格(因此我会查看没有映射 DOB 的抵押人)。我遇到的问题是弄清楚如何设置 For 循环或任何最佳条件语句,它会将 B 列中所有单元格的 D 列中每个空单元格的“空白”一词填充到 E 列中填充名称。由于数据不同,我不想硬编码一个范围。

<头>
贷款编号 名字 姓氏 出生日期 出生日期空白
------------- ------------ ----------- ------------ -------------------
xxxxxxxxxx 山姆 亚当斯 01/01/1999
xxxxxxxxxx 杰克 丹尼尔斯 02/02/1999
xxxxxxxxxx 何塞 Cuervo

因此,在上表中,我需要我的宏来仅显示 Jose Cuervo 等,并为列 B 中显示的每个名称自动将“BLANK”填充到列 E 中。

先谢谢你!

1 个答案:

答案 0 :(得分:0)

据我所知,您首先要确定行数(贷款数量),然后检查是否有名字,然后检查是否有出生日期。如果有名字,但没有出生日期,那么您希望 E 列填写空白。如果我理解正确,此代码应该这样做:

Sub filter()

Dim numberOfLoans As Integer
Dim row As Integer

'This finds the number of loans (assuming there's no missing
'loan numbers and the first row is the header)

Cells(1, 1).Select
Selection.End(xlDown).Select
numberOfLoans = ActiveCell.row - 1

'This for loops says that if Column B has a name, but Column D
'empty, then Column E will say "Blank"

For row = 1 To numberOfLoans

If Cells(row + 1, 2) <> "" And Cells(row + 1, 4) = "" Then
    Cells(row + 1, 5) = "Blank"
End If

Next row

End Sub