首页 > 解决方案 > 如何仅获得两个重复值之一

问题描述

问题

简单来说,我试图为交替模式设置一个公式。我一直遇到的问题是有两个交替值,而 Google 表格不喜欢只重复其中一个值而没有另一个值。

我创建了一个示例表来演示我的问题。在Column A中,输入日期。Column B然后Column C分别自动填充星期几和上午或下午。Column C在 AM 和 PM 之间交替的每个其他值。我正在尝试对其进行设置,以使该行为空白,直到输入中的值Column A。当Column A. 请注意,交替的 AM/PM 模式永远不会改变。

我试过的

工作表示例

如上图所示,我尝试了三种主要方法。中的数据C2:C8是期望的结果。

方法一:

E2=transpose(split({rept(join(";",{"AM";" "})&";",(roundup(counta(A2:A9)/2)))},";"))

F3=transpose(split({rept(join(";",{"PM";" "})&";",(counta(A2:A9)/2))},";"))

这些公式单独工作,最能代表我想要完成的工作,但我还没有找到一种方法将它们组合在一起在一个列中一起工作。

方法二:

H2=transpose(split({rept(join(";",{"AM";"PM"})&";",(roundup(counta(A2:A9)/2)))},";"))

这与方法1基本相同,但放在一个公式中。这里的问题是 Google 表格不喜欢重复一半的次数。因此,如果重复次数 ( counta(A2:A9)/2) 包含一半(即 3.5),它仍会向下舍入到最接近的整数。

方法三:

J2=ArrayFormula(TEXT(SEQUENCE(3),"")&{"AM";"PM"})

这对我来说似乎最有希望,因为当递增一时,它增加了一行,但我很快遇到了一个问题,如果我超过序列号 2,它会抛出错误Array arguments to CONCAT are of different size

参考

我使用了各种搜索词和网站来尝试解决这个问题,但还没有找到有效的方法。不过,我可能会遗漏一些非常简单的东西,希望这是一个快速的解决方案。

示例表:

https://docs.google.com/spreadsheets/d/1I3EtptFLfDHpAQ8AR6Lwa01dSpJ3Cy8MTX1_OjHExSc/edit?usp=sharing

我所有的公式都来自以下网站:

Google 表格中的 REPT 功能

如何在 Google 表格中重复多列 N 次

标签: google-sheetsgoogle-sheets-formula

解决方案


删除 Col C 中的所有内容(包括标题)并将此公式放入 C1:

=ArrayFormula({"AM/PM"; IF(A2:A="",,IF(COUNTIFS(A2:A,A2:A,ROW(A2:A),"<="&ROW(A2:A))=1,"AM","PM"))})

COUNTIFS查找每一行的日期“直到这一行”的匹配数。由于该计数将(或应该)仅是 1 或 2,因此IF可以轻松地相应地分配“AM”或“PM”。


推荐阅读