【问题标题】:COUNTIF and VLOOKUP function across multiple pages跨多个页面的 COUNTIF 和 VLOOKUP 函数
【发布时间】:2015-10-25 09:08:49
【问题描述】:

我想计算(计数)条目在多个工作表中出现在某人姓名右侧的次数(姓名将出现在不同工作表的不同行中)。

我正在计算花名册上的轮班。
我有十二张工作表 - 每个月一张。
在每个工作表 B1 到 AF1 上是月份中的日期。
每个工作表 A2 到 A10 上都有人名(这些更改顺序在不同的工作表上)。
在某人姓名的右侧(跨月),他们有班次名称,我们称他们为 S1、S2、S3 和 S4。

在工作表 13 上,我需要计算一个人完成每个不同班次名称的次数。因此,所有人员的姓名都按字母顺序在页面下方列出,顶部是不同的班次名称,单元格需要填充其他工作表中的计数。

如果需要的话,很乐意使用 VBA,如果可能的话,也很乐意使用公式。

【问题讨论】:

  • 您好,欢迎来到论坛。通常,您需要发布您拥有的任何代码并指出您卡在哪里。不要期望人们从头开始为您编写代码。此外,您似乎没有在您的问题上投入太多的研究工作,这可能就是有人否决它的原因。
  • 谢谢和抱歉。我将在 trincot 的回答下发布我最终所做的事情 - 因为这与我所做的很接近。

标签: excel vba vlookup countif


【解决方案1】:

一个想法是首先对每张纸进行计数:

分别在 AG 到 AJ 列中添加(假设有四个班次)班次 S1、S2、S3 和 S4 的总数,公式如下:

=COUNTIF($B1:$AF1; "S1")

在下一列中使用“S2”,...等

然后,为了让事情变得不那么复杂,您必须确保 12 个工作表中的每一个工作表都以相同的顺序在 A 列中列出相同的名称。如果人们在 3 月中途加入劳动力队伍,那么还要在 1 月和 2 月的工作表中添加他们的姓名。离开的人也一样:在所有月份留下他们的名字。您最好只在 A 列的第一个工作表中键入名称,并在所有其他工作表中使用从第一个工作表中提取此名称的公式。在第 13 页也这样做。

然后在第 13 页中,接下来的列将再次专门用于轮班。现在假设您的其他工作表名称类似于“一月”到“十二月”,您可以按如下方式对它们求和(在单元格 B1 中):

=SUM(January:December!AG1)

【讨论】:

  • 感谢您的建议。这种方法与我最终提出的方法很接近。
  • 谢谢。你会明白,通过这样的练习,你可以开发出一个非常灵活的解决方案,但灵活性越大,解决方案就会变得越复杂,而且描述起来也很长。你在进一步发展这方面做得很好。
【解决方案2】:

我采用了与 Trincot 建议类似的方法。 在每个月底,我添加了我的各种班次类型并进行了计数(在这种情况下,AG$1 表示 S1,我对 S2 等做了同样的操作)

   =COUNTIF($B2:$AF2,AG$1)

在我的结果页面(工作表 13)中,我在页面下方列出了每个人的姓名,并使用了以下公式。

=VLOOKUP($A3,lu_Jan,33,FALSE)+VLOOKUP($A3,lu_Feb,33,FALSE)+VLOOKUP($A3,lu_Mar,33,FALSE)

通过这样做,我不必确保每个名称在每个其他工作表上都以相同的顺序列出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多