Microsoft Excel - 根据多个条件从不同的工作表复制整行

Microsoft Excel - 根据多个条件从不同的工作表复制整行

好的,我尝试寻找这个答案已经有一段时间了,但我无法通过公式来获得它,因为它需要的内容超出了公式栏可以容纳的范围,而且我对宏没有任何经验。

规则:

规则 1. Fox/Golf/Hotel!A4 始终为每月 1 号,A34 始终为每月 31 号(A33=30 号,A32=29 号(适用时),A31=28 号)

规则 1a。Fox!A36:A37 和 Fox!A39:A40 永远不会是日期

规则 1a.1. Fox!A36 为“Super-1-16”,Fox!A37 为“Super-17-31”

规则 1a.2。Fox!A39 将成为“主要”成员,而 Fox!A40 将成为“额外”成员

规则 1b。高尔夫/酒店!A36:A37 永远不会是约会。

规则 1b.1。高尔夫/酒店!A36 将是“超级 1-16”,高尔夫/酒店!A37 将是“超级 17-31”

规则 2. Alpha/Bravo/Charlie/Delta! 上的对应日期可以是任何单元格 B3:B400

规则 3。“Position” 是“Alpha/Bravo/Charlie/Delta!A3:A400”中的一个变体,但对于“Fox/Golf/Hotel!”单元格来说,它始终是一个常量(有关常量,请参阅下文)。

规则 3a。狐狸!“位置”指定:

  1. B2="OOD" 并且应该覆盖 C4:G34。
  2. I2="AOOD" 并且应该覆盖 J4:M34。
  3. O2="DD" 并且应该覆盖 P4:S34。
  4. A35="OOD SUPERNUMERARY" 并且应该覆盖 C36:G37。
  5. A38="CDO" 并且应该覆盖 C39:G40。
  6. I35="ADNCO SUPERNUMERARY" 并且应该覆盖 J36:J37。
  7. O35="DD SUPERNUMERARY" 并且应该覆盖 P36:S37。

规则 3b。高尔夫/酒店!“位置”指定:

  1. B2="DNCO" 并且应该覆盖 C4:F34。
  2. H2="ADNCO" 并且应该覆盖 I4:L34。
  3. N2="Rover 1" 并且应该覆盖 O4:R34。
  4. T2="Rover 2" 并且应该覆盖 U4:X34。
  5. A35="DNCO SUPERNUMERARY" 并且应该覆盖 C36:F37。
  6. H35="ADNCO SUPERNUMRARY" 并且应覆盖 C39:L40。
  7. N35="ROVER 1 SUPERNUMRARY" 并且应该覆盖 J36:R37。
  8. T35="ROVER 2 SUPERNUMRARY" 并且应该覆盖 P36:X37。

规则 4. 以下单元格应指示从哪个工作表复制信息:

规则 4a。狐狸!(B 将指示 C:G。I 将指示 J:M。O 将指示 P:S)

规则 4a.1. B4:B34(如果 Fox!B4="A"、Fox!B2=Alpha!A136 且 Alpha!B136="5 月 1 日" 则 Fox!C4:G4 = Alpha!C136:G136)。

规则 4a.2。I4:I34(如果 Fox!I7="D"、Fox!I2=Delta!A98 且 Delta!B98="May 4" 则 Fox!J4:M4 = Delta!C98:F98)。

规则 4a.3。O4:O34。

规则 4a.4. B36:B37(如果 Fox!B36="C"、Fox!A35=Charlie!A250 且 Charlie!B250="5 月 1 日至 16 日" 则 Fox!C36:G36 = Charlie!C250:G250)。

规则 4a.5. B39:B40(如果 Fox!B40="B"、Fox!A38=Bravo!A123 且 Bravo!B123="Supernumerary" 则 Fox!C40:G40 = Bravo!C123:G250)。

规则 4a.6。I36:I37。

规则 4a.7。O36:O37。

规则 4b。高尔夫/酒店!(B 将决定 C:F。H 将决定 I:L。N 将决定 O:R。T 将决定 U:X)

规则 4b.1。 B4:B34。

规则 4b.2。H4:H34。

规则 4b.3。N4:N34。

规则 4b.4。T4:T34。

规则 4b.5。 B36:B37。

规则 4b.6. H39:H40。

规则 4b.7。 N36:N37。

规则 4b.8。T36:T37。

我需要根据 Fox/Golf/Hotel! 日期 (Fox/Golf/Hotel!A4:A40) 和规则 3 中设置的“位置”字段,将单元格从“Alpha/Bravo/Charlie/Delta!B3:G400”复制到“Fox/Golf/Hotel!”中的相应单元格。

进行编辑以使请求不那么令人困惑:

这是我负责的每月名册,只是想让所有参与者更容易理解。

Sheets Fox!、Golf! 和 Hotel! 对应于我们拥有的特定建筑物,而 Sheets Alpha!、Bravo!、Charlie 和 Delta! 对应于我们的部分。

Fox/Golf/Hotel!是通过从 Alpha/Bravo/Charlie/Delta!中提取信息来填写的。我希望实现自动化,这样我们就不必每个月都进行复制和粘贴。

我尝试创建一个公式,但是无法嵌套那么多 IFAND。

我知道上面有很多信息,但我会尽我所能进行总结。

对于床单狐狸!,

步骤 1. 我需要使用单元格 B4:B34 来确定从哪张工作表中提取信息(如果 B4=A,则从工作表 Alpha! 中提取。如果 B4=B,则从工作表 Bravo! 中提取。如果 B4=C,则从工作表 Charlie! 中提取。如果 B4=D,则从工作表 Delta! 中提取。)

第 2 步。确定工作表后,我需要使用单元格 B2 在 Alpha/Bravo/Charlie/Delta!A3:A400 上定位匹配项。

步骤 3. 找到匹配项后,我需要使用单元格 A4:A34 来定位 Alpha/Bravo/Charlie/Delta!B3:B400 上的匹配项

步骤 4. 一旦在同一行找到两个匹配项,我需要复制单元格 Alpha/Bravo/Charlie/Delta!C3:G400。

Fox! 的示例具体如下:

例 1. 如果 Fox!B4="A", 且 Fox!B2=Alpha!A136, 且 Alpha!B136="5 月 1 日", 则 Fox!C4:G4 = Alpha!C136:G136。

例 2. 如果 Fox!B4="B",且 Fox!B2=Bravo!A136,且 Bravo!B136="May 1",则 Fox!C4:G4 = Bravo!C136:G136。

示例 3. 如果 Fox!B4="C",且 Fox!B2=Charlie!A136,且 Charlie!B136="5 月 1 日",则 Fox!C4:G4 = Charlie!C136:G136。

例 4. 如果 Fox!B4="D", 且 Fox!B2=Delta!A136, 且 Delta!B136="May 1" 则 Fox!C4:G4 = Delta!C136:G136。

高尔夫/酒店的示例!具体如下:

示例 1. 如果 Golf!B4="A",且 Golf!B2=Alpha!A136,且 Alpha!B136="5 月 1 日",则 Golf!C4:F4 = Alpha!C136:F136。

示例 2. 如果 Hotel!B4="B",且 Hotel!B2=Bravo!A136,且 Bravo!B136="5 月 1 日",则 Golf!C4:F4 = Bravo!C136:F136。

示例 3.如果 Golf!B4="C",且 Golf!B2=Charlie!A136,且 Charlie!B136="5 月 1 日",则 Golf!C4:F4 = Charlie!C136:F136。

示例 4. 如果 Hotel!B4="D",且 Hotel!B2=Delta!A136,且 Delta!B136="May 1",则 Hotel!C4:F4 = Delta!C136:F136。

对于每个单独的例子来说,这都很容易做到,但我需要所有 4 个例子在相应页面的每个单元格中都处于活动状态。

答案1

兄弟,无意冒犯,但这是有史以来措辞最差的问题!还有格式!

TL;DR,以下是我认为你需要的

将其放入 C4 中,它会将 A 到 D 转换为工作表名称。

=CHOOSE(CODE(B4)-CODE("A")+1,"Alpha!","Bravo!","Charlie!","Delta!")

现在在 D4 中,我们将计算所选工作表中 B2 匹配项出现的索引或行号

=MATCH($B$2$, INDIRECT(C4 & "A3:A400"),0)

现在在 E4 中,我们将链接到另一张表中的值,条件是 A4 与另一张表中的 B 列:索引 D4 匹配

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), *link to cells in C to G cells*, *return blanks*)

因此,最终这会以数组公式的形式出现在 E4:I4 中(选择 E4 到 I4,按 F2,粘贴下面的公式,然后按 CTRL+SHIFT+ENTER - 仅输入无效)。单个数组公式现在将占用 E4:I4 中的多个单元格:(请注意,在 Office 365 中,您只能在 E4 中输入公式,它将溢出到 I4)

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), INDEX(INDIRECT(C4 & "C3:C400"),D4):INDEX(INDIRECT(C4 & "G3:G400"),D4), "")

相关内容