【发布时间】:2015-03-17 02:43:01
【问题描述】:
由于我的组织的组策略设置强制用户显式单击以启用 office 文件中的宏,我想要一种解决方法来使用 vba 来实现相同的结果(并且无需单击任何东西作为额外的奖励)。数据透视表也是不可能的。
我有一个工作表,其中位置作为列标题 (A1:E1),事件作为行标题 (A2:A50)。剩余的单元格 (B2:E50) 填充了日期,这些日期表示每个地点的下一个活动将在何时举行。并非所有地点都服务于每个事件,因此“N/A”是可能的。活动可能在同一天在同一地点举行。
事件数据:
我的目标是提供数据的辅助视图,显示每个位置(列标题)下方的当前和下个月即将发生的事件(作为行条目)。这(相对)足够简单,只需上下复制一个数组公式。
公式:=IFERROR(INDEX(Master!$A$6:$A$15,SMALL(IF(Master!B$6:B$15<>"N/A",IF((Master!B$6:B$15<DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))*(Master!B$6:B$15>=DATE(YEAR(TODAY()),MONTH(TODAY()),1)),ROW(Master!B$6:B$15)-5)),ROWS(A$3:A3))),"")
输出:
但是,事件按照它们出现在主工作表中的方式列出,而不是按我喜欢的时间顺序列出。我在每个事件旁边添加了一个日期列,但这不可排序,因为数组公式使所有内容保持动态。
所需的输出摘录:
Tampa
19-Jan-15 Intermediate I
24-Jan-15 Introduction
26-Jan-15 Beginner I
【问题讨论】:
-
嗨。您希望将数组公式保留在那里的事实似乎表明您认为有人将编辑源单元格并且您希望它自动传播。真的吗?如果没有,那么我可能只是使用数组公式来生成新工作表,对所有内容进行排序,然后将其作为“只读”分发给数据的所有“消费者”。但我可能不了解情况。
-
如果您从来没有在同一日期举办过两次活动,那会相对简单——是这样吗?
-
......如果你从来没有在同一日期有两个或更多事件同一个城市,我的意思是
-
@ButtleButkus 有点像。然而,唯一真正的消费者是编辑源数据的人,在我的组织中,这是一个流动率很高的职位。但大多数情况下,我只是想在我的编程工具箱中获得一个额外的工具。我以前用某人的 d&d 工作表做过一次,虽然是在 vba 中。
-
当我遇到 Excel 的逻辑限制时,我转向了 Access。几个星期都很棒,然后我遇到了它的极限。然后我把脚趾伸进了 PHP/MySQL 的深渊,很快就潜入其中。我认为,从 excel 公式中获得的系统有多复杂是有限度的,但对我来说,下限是我的大脑可以记录的公式。如果您有任何尝试 MySQL 数据库的方法,我强烈建议您尝试一下。
标签: excel sorting array-formulas