在Google表格中制作数字时钟

2020-12-26 09:15:11

“这很酷,真的很酷,但我觉得您可能需要干预” –当我向他们展示时,朋友的反应。

我仅使用Google表格公式制作了数字时钟。它每分钟更新一次,就像一个时钟,差不多。

我坚信要充分利用我们提供的工具,而这种垃圾是学习事物的好方法,而这些东西在其他地方更有用!

无需在JavaScript中执行自定义功能,Google表格就非常灵活。我使用它来自动执行项目管理任务,甚至使用Screaming Frog进行网站更改检测。

还可以真正使用Google表格-如果您在Google表格中创建内容,则可以与同事和客户共享该内容,而无需他们安装任何东西,不需要他们的帐户,也不必担心任何代码提及。

诸如Python和JavaScript之类的语言是完成任务的好方法,但是很高兴看到我们可以用很少的ole Sheet实现什么。

如果您想玩耍,请在这里访问Google表格数字时钟。我已将链接设置为自动复制,因此您拥有自己的版本,可以在其中查看公式。

正如我所说–这些东西的价值是我们能够学习的。因此,让我们看看我们学到了什么。

= hour(A1)将为我们提供特定时间中包含的小时。如果我们在上面的时间戳上使用hour(),我们将得到23

= minute(A1)给我们分钟。如果我们在上面的时间戳上使用minutes(),我们将得到24

= regexextract()可让我们从单元格中获取部分值,但前提是该值仅用于文本(数字可以解释为数字或表格中的文本)。因此,首先我们使用= text(hour(A1),“ ##”)–从时间戳开始花费一个小时,然后将其转换为文本。

您可能会在下面注意到,小时和分钟值是左对齐的,而不是右对齐的。这是找出表格是否将数字视为数字或文本的一种方法。

然后,我们使用= regexextract()来获取小时的第一个数字,就像= regexextract(text(HOUR(A1),“ ##”),“ ^ \ d”)一样。不用太担心RegEx,这意味着“第一位数”。如果您想了解有关RegEx的更多信息,请查看我的RegEx学习游戏– Slash Escape。

我们将像这样提取最后一个小时数; = regexextract(text(HOUR(A1),“ ##”),“ \ d $”)

要创建我们的数字时钟,我们需要告诉工作表在哪个时间突出显示哪些单元格。 为此,我们将使用表格的惊人的条件格式设置。 我们将对时钟中的每个空间应用不同的条件格式。 为了更清楚-这里每个都以不同的颜色突出显示。 我们有四个规则,时钟中的每个数字一个。 每个部分都将一部分时间用于显示。 我们的广泛过程是: 上面定义绿色数字的规则当小时的第一个数字为1时,请突出显示我们标记为“ 1个单元格”的第一块中的所有单元格 当小时的第一位数字是8时–突出显示我们标记为“ 8个单元格”的第一块中的所有单元格 上面定义蓝色数字的规则当分钟的第一位数字是6时–突出显示最后一块中我们标记为“ 6个单元格”的所有单元格 我们的第一个绿色数字最多将占据C3和H14之间的任何单元。

在该范围内的每个单元格中,我们写了一个RegEx,它告诉我们数字是否会使用该单元格。

例如,如果创建数字4、5或7,则单元格C3将突出显示。如果创建数字0、1、2、3、6、8或9,则单元格C3将不会突出显示。 C3中我们写了^(4 | 5 | 7)$,表示“完全匹配4、5或7,别无其他。

在这种情况下,U1是我们提取小时的第一个数字的地方。因此,此处写的自定义公式的意思是“当小时的第一位匹配4、5或7时,突出显示C3”。

关于Google表格中的自定义公式的一件聪明事是,如果将其应用于一系列单元格(例如C3:H14),它将考虑相对和绝对单元格引用。在我们的公式中,我们使用了$ U $ 1 –这是绝对的单元格引用–无论我们在何处应用此自定义公式–该部分始终引用U1。但是,我们没有写$ C $ 3,而是写了C3。因此,在我们范围的第一个单元格中,我们将引用C3,但如果将此公式应用于下一行的单元格,则将引用C4,如果在该单元格上移动一列,则将引用D4。

这就是我们创建时钟的方式,而不必为每个时钟写出不同的条件公式。将条件格式应用于C4时,它将检查C4中的正则表达式是否与小时的第一位数字匹配。 C4中的正则表达式为^(2 | 3 | 4 | 5 | 6 | 8 | 9 | 0)$,因此,如果小时的第一位数字为2 – C4将突出显示,而C3将不突出显示。

试图逐一写出所有这些正则表达式公式将是一个巨大的痛苦。取而代之的是,我们写出我们想要代表的每个可能的数字,然后将它们合并到正则表达式中。

我们的时钟C3单元是数字表A3,G3,M3,S3,Y3,AE3,AK3,AQ3,AW3,BC3中数字的组合。时钟C4是A4,G4,M4等,等等。

基本上–从每个单元格中获取价值,然后通过管道将它们连接在一起|在它们之间(因为正则表达式中的管道表示或)。

问题在于我们有一些空单元格,因此我们可以得到一个正则表达式,该正则表达式为||| 4 | 5 || 7 ||| –留有空白意味着我们不仅会匹配数字–我们还会匹配缺少数字的情况,这可能会浪费我们的时钟。为了摆脱那些有问题的多余位,我们将在正则表达式上使用正则表达式。

此公式将采用我们联接的结果,确定与\ | {2,}相匹配的任何内容(基本上是行中的两个或多个管道),然后将它们替换为| –一管。

我们也不想像这样在开始或结束时使用管道; | 4 | 5 |因此我们将在regexreplace上进行正则表达式

该公式将查看我们最后一个regexreplace()的结果,找到与^ \ |相匹配的任何内容。 (位于文本开头的管道)或\ | $(位于文本末尾的管道),并用“”(什么都没有)替换。

为了确保我们有一个不错的,特定的正则表达式可以匹配,我们可以在开头和结尾处添加一些文本。 Google表格具有连接功能,但我发现使用&更容易阅读

该公式将使用我们清理过的正则表达式,添加braccet以及“开始”和“结束”符号,因此我们将具有以下内容: ^(4 | 5)$

我们知道正则表达式将只匹配数字4或数字5,而不会匹配其他任何内容。尼斯和具体。

至此,我们已经为第一个小时数字创建了模板。我们不想针对其他每个模板进行所有操作,它们可以完全相同。因此,我们使用arrayformula将一个单元格块复制到另一位置。

我们的第一个条件格式公式将绿色块中的每个单元格与当前小时的第一位进行了比较。我们的第二个公式将黄色块中的单元格与小时的第二个数字进行比较,我们的第三个公式将蓝色块中的单元格与分钟的第一个数字进行比较等。

如上所述-随时随地使用Google表格并查看其工作原理。

这有点有趣,希望可以帮助您学习一些Shee​​ts技巧,这些技巧在其他地方也很有价值。我喜欢像工作表这样的开放平台的一件事是,有很多人在创造这种东西。当我开始分享这一点时,一位同事指出,本·科林斯实际上使用Sheets迷你图公式创建了一个工作模拟时钟,这给人留下了深刻的印象。

您最近看过任何很棒的床单项目吗?您认为我在这里可以做得更好吗?鸣叫我@ robinlord8