单元格中数字范围的自定义数字格式
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
参考文献:
我有一个包含数字范围的单元格,比方说 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