单元格中数字范围的自定义数字格式

Custom Number Format for Number Range in Cell

我有一个包含数字范围的单元格,比方说 50-60,我想对其应用自定义数字格式。理想情况下,我希望能够将其格式化为输出 50Hz-60Hz.

适用于常规整数的语法是 #"Hz",但我找不到针对虚线范围执行此操作的内置方法,我怀疑这是不可能的。

答案:

如您所料,这是不可能的。

更多信息:

正如 Tanaike 在他上面的评论中所说,单元格输入 50-60 是一个字符串 - 纯粹作为文本读取,因为它包含 - 字符。结果,表格没有使用数字格式来更改其显示方式的功能。

(某种)解决方法:

免责声明: 这些建议并非完美的解决方法,具体取决于单元格中数据在别处的处理方式在 sheet 中,这些可能不起作用。但是,如果您只想影响 UI,他们会提供解决方案。

解决方法 1:使用自定义数字格式

您可以使用格式 ##"Hz-"##"Hz",如果单元格的输入是 5060 而不是 50-60,您给出的示例将显示 50Hz-60Hz。但是,如果单元格的频率范围超过 100,您将需要更改格式以包含三个 # 个字符:

  • ##"Hz-"##"Hz" 将使数字 5060 显示为 50Hz-60Hz
  • ###"Hz-"###"Hz" 将使数字 120130 显示为 120Hz-130Hz
  • ####"Hz-"####"Hz" 将使数字 14201430 显示为 1420Hz-1430Hz

解决方法 2:使用 onEdit(e) 触发器

如果您自己输入 - 很重要,那么您可以使用 onEdit() Apps 脚本触发器来更改单元格的格式以在-之后包含 Hz 单元事实上

对于此解决方法,我假设您的频率范围所在的列是 C 列。

Tools > Script editor 菜单项中,您可以使用以下代码创建函数:

function onEdit(e) {
  if (e.range.getColumn() != 3) {
    return;
  }
  else {
    var f = e.value.split("-");
    e.range.setValue(f = f[0] + "Hz-" + f[1] + "Hz");
  }
}

确保将行 if (e.range.getColumn() != 3) 上的值更改为您的频率范围所在的列:此示例使用值 3,因为假定该列为 C 列,但 D 列为 4 , E 为 5,等等

使用保存图标保存脚本,按 运行 按钮 (►),并确认 运行 脚本的身份验证。

每当将 50-60 这样的值输入到 C 列时,这将自动 运行,并改为显示 50Hz-60Hz

解决方法 3:使用自定义函数

Google 工作表允许您编写自定义公式,其工作方式与 =SUM()=COUNT().

等内置公式类似

按照解决方法 2 中的相同步骤打开脚本编辑器,创建以下函数:

function hertzify(f) {
  f = f.split("-");
  return f[0] + "Hz-" + f[1] + "Hz";
}

这与解决方法 2 的作用类似,但不是自动更改特定列中任何内容的值,而是通过在单元格中输入以下公式来调用该函数:

=HERTZIFY("50-60")

这将像以前一样将单元格的显示值更改为 50Hz-60Hz

您也可以在其他单元格上使用它;例如,如果单元格 C3 具有文本 120-130,并且在单元格 D3 中输入 =HERTZIFY(C3),则 D3 将显示 120Hz-130Hz.

功能请求:

由于上述解决方法要么像处理文本一样处理单元格数据,要么要求以特定方式格式化数字,因此它们可能不是适用于所有情况的完美解决方法。

在这种情况下,我建议使用 Google 提交功能请求,以便能够为特定单元格中的一系列值定义数字格式。

您可以通过 Google 表格用户界面中的 Help > Report a problem 菜单项来执行此操作,或者在 Google 的问题跟踪器上提出功能请求以实现此功能作为一项功能。问题跟踪器的 link 是 here

参考文献: