我对编程有点陌生,最初只是想改进电子表格,但它已经超越了在 excel 中使用基本功能。我有一个表格,我正在查看一个函数以在第一列中查找建筑编号,然后查看其他两个相应列中的开始和结束日期,以确定它是否应该填充日历工作表上的特定块。出现问题是因为相同的建筑物编号可能会以不同的日期出现多次,我需要找到与正确日期匹配的条目。
我能够创建一个工作复杂的公式来找到第一个实例,并了解到我可以在错误语句中再次添加该公式的嵌套 if 并稍作更改。我可以继续这样做,但它变得非常大而且很麻烦。我正在尝试找到一种方法来为公式创建一个函数,其中包含一个变量,该函数将查看它已经使用了多少次,因此它会继续在表格中搜索适合参数的答案。
这是目前我的公式:
=IFERROR(IF(AND(DATE('IF SHEET (2)'!$F$7,MATCH('IF SHEET (2)'!$C$2,'IF SHEET (2)'!$C$2:'IF SHEET (2)'!$N$2,0),'IF SHEET (2)'!C$4)>=VLOOKUP("2D11"&1,A2:F6,4,0),DATE('IF SHEET (2)'!$F$7,MATCH('IF SHEET (2)'!$C$2,'IF SHEET (2)'!$C$2:'IF SHEET (2)'!$N$2,0),'IF SHEET (2)'!C$4)<=VLOOKUP("2D11"&1,A2:F6,4,0)),IF(VLOOKUP("2D11"&1,A2:F6,3,0)="2D11",VLOOKUP("2D11"&1,A2:F6,6,FALSE)),"NO ANSWER"),"ERROR")
你看到2D11&1
的地方是我需要变量 1 的地方,所以它是“它在函数 +1 中使用的次数”,然后我可以循环它,这样它就会继续检查,直到它用完 2D11 或找到一个匹配的. 我以前没有发布过,我正在通过大量的试验和错误来做到这一点,所以如果您需要更多信息,请发布并说出来,我会尽力提供。
因此,与其让某人尝试理解我发布的荒谬公式,我会尝试通过说明我需要完成的内容并尝试了解如何将其转换为 VBA 函数来使其更简单。所以我有点看几个步骤:
- 将 A 列中建筑物名称的第一个实例与
输出单元格所在行的建筑物名称相匹配。 - 日期是否与输出单元格连接 >= 第一个条目的开始日期(用户在 D 列中输入)。
- 日期是否与输出单元格连接 <= 第一个条目的结束日期(用户在 E 列中输入)。
- 如果第 1、2 和 3 部分都为真,则为建筑物的第一个实例输入单元名称(位于 F 列中)。
- 如果第 1、2 或 3 部分为 False,则循环查看第 1 列下建筑物名称的下一个实例。
希望这比公式更清楚,所以我能够获得帮助,因为由于对 VBA 的了解不足,我仍然很困惑。