具有多种变化的 IF 公式

具有多种变化的 IF 公式

我建立了一个系统来管理我们酒店的预订。我是自学成才的 Excel 用户,只知道过去几个月在网上搜索到的东西。

我遇到了一个问题。一年中的每一天都有自己的 24 个房间列表,其中包含房间号、客人姓名、护照号、付款日期、国籍等信息。我想为这 365 个区域中的每一个区域赋予与一年中的某一天相关的编号,例如 1 月 1 日 = 1

我希望能使用这个主电子表格通过 if 公式 =if(cellref = 1 .... 自动填写每日宾客名单,它会在我的每日表格中填写我需要的所有信息,例如姓名、护照号码、付款日期等。

在我的脑海里,我预见到了一个巨大的混乱的公式,它必须解释原始电子表格/工作表的 365 种可能性。

我如何使用公式将年度电子表格中的信息填写到每日表格中?有没有简单的方法,还是我得在每日表格的每个单元格中输入长篇公式?

任何帮助都值得感激,我要破解它,只是需要一些指导。

答案1

我要在这里做一些假设,但我想我知道你的意思。假设你有一张表格,上面有格式化的“每日客人名单”,还有一张表格,你要从中提取数据(因为 365 个工作表可能有点难以管理)。在没有看到你的格式的情况下,我会假设在你的主电子表格中,A 列有一年中的日期(1 - 365),B 列有房间号(1 - 24)。我进一步假设你已经按 A 列对其进行了排序,以便同一天的所有房间都是连续的(这对我的例子来说很重要,但你可以用更复杂的逻辑来解决这个问题)。

在您的每日宾客名单工作表上,将您想要运行的日期编号放在一个单元格中(我的示例中为 A1)。

B1:

=MATCH(A1,Sheet1!A:A)

如果第 2 行包含标签,那么我们将使用您提取的数据开始第三行:

=INDIRECT(ADDRESS(ROW()-3+$B$1,COLUMN()+1,4,1,"Sheet1"))

您可以将该公式复制到列和 24 行以从主列表中获取数据。=indirect()根据文本字符串抓取单元格。根据address()行号、列号、几个格式选项和工作表名称创建指向单元格的字符串。

我通过获取公式单元格的行来指定行号=row(),减去三,因为我假设前两行是标签等,然后添加具有正确日期的第一行的行号(在 A1 中输入并通过公式找到=match())。

我将该列偏移了 1,因为我认为您不需要在此每日宾客名单上重复日期标识符。

这两个格式变量不会改变此函数与=indirect()函数配对时的工作方式。最后一个变量是以字符串形式输入的工作表名称。如果您必须从多个工作表中提取数据,您可以将工作表名称放在单元格中并引用它。在上面的示例中,您必须将“Sheet1”替换为您为数据选择的任何工作表名称。

我希望这篇文章足够有指导意义,让您从这里开始使用它。有很多方法可以实现这一点(例如,您不需要 B1,但我认为它使示例更清晰)。

最后,我建议使用日期而不是整数。这样可以让事情变得非常清晰,你甚至可以做一些方便的事情,比如使用=today()今天的日期。

相关内容