google-sheets - 如何仅获得两个重复值之一
问题描述
问题
简单来说,我试图为交替模式设置一个公式。我一直遇到的问题是有两个交替值,而 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
我所有的公式都来自以下网站:
解决方案
删除 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”。
推荐阅读
- .net - 如何使用 msbuild 或 Roslyn 仅在给定项目中构建源代码?
- xamarin.forms - 在 listView 模板中更改 BindingContext 不指向 Viewmodel
- python - 需要在 Asyncio Loop 中运行 Playwright Sync API
- scheme - 考虑应用函数的简单方法
- java - 运行 fat jar vs sbt run
- arrays - mongodb如何只找到数组的一部分
- html - AEM富文本源编辑器锚标记剥离href形成如Sightly标记
- python - 根据输入(或自动输入)提取另一个值
- pandas - Groupby month 基于日期列的熊猫数据框
- javascript - 函数和调用函数的箭头函数有什么区别