2014-11-20 55 views
-1

时应用StikeThrough我正在制作一个注册表,其中包含顶部的可用日期和侧面的名称。当某人将姓名首字母缩写在其中一个日期栏中时,我希望顶部的日期更改为StrikeThrough,以便其他人很容易将其识别为不再可供选择。任何想法如何做到这一点?所以它需要是这样的:如果任何文本出现在列E的任何地方,然后E1:E3更改为StrikeThrough ....谢谢!Google表格:在任何值输入栏

我使用谷歌床单,电脑,Windows 8,我是新来的,如果不让我上传图片...以下是我工作的一个想法:https://dl.dropboxusercontent.com/u/41966437/OVERTIME%20SIGN%20UP%20%20%20Google%20Sheets.png

见我有关更多详细信息,请参阅下面的问题。谢谢!

+0

嗨,有多少datecolumns你有吗?日期在哪一行?文本将在下面一行输入?在你的问题中,我看到E1:E3是一列的一部分,不应该是一个行吗? – JPV 2014-11-21 12:47:15

+0

你好,日期范围从E栏第1行开始,延伸到AR栏第1行,但每个月都有更多或更少的日期。日期将始终在E列第1行(E1)开始,并跨越该行。 – Christopher 2014-11-22 14:30:28

+0

因此,单元格E1中的一个日期将有一个人的姓名首字母输入到该列的一个单元格中,该单元格来自E4:E25。如果我们添加或丢失有资格注册的人,这可能会发生变化。 – Christopher 2014-11-22 14:34:02

回答

0

你可以看看这是否工作?作为奖励,我也做了这一行 - 尽管消除了初始位置(并且没有其他首字母在同一列中),但消失了。

function onEdit(e) { 
var ss = e.source.getActiveSheet(); 
if (e.range.columnStart < 5 || e.range.rowStart < 3) return; 
e.range.offset(-e.range.rowStart + 1, 0) 
    .setFontLine(e.value ? "line-through" : "normal"); 

}

注:脚本将在电子表格(练习册),如果你需要它在1张只工作,请填写下面的表单名称的代码,并使用这个每片工作而不是以前的:

function onEdit(e) { 
var ss = e.source.getActiveSheet(); 
if (ss.getName() !== 'Sheet1' || e.range.columnStart < 5 || e.range.rowStart < 3) return; 
e.range.offset(-e.range.rowStart + 1, 0) 
    .setFontLine(e.value ? "line-through" : "normal"); 

}

+0

另请注意:脚本使用事件对象。所以不要试图从脚本编辑器运行它(或者你会得到e = undefined)。相反,请尝试进行一些编辑,看看是否发生了重创​​。 – JPV 2014-11-22 19:48:39

+0

感谢您的协助。我不熟悉脚本,因此我不知道如何或在哪里在我的工作表中输入。我打开'脚本编辑器'并在那里通过它?谢谢。 – Christopher 2014-11-24 18:08:19

+0

是的。复制并粘贴到脚本编辑器中并保存。系统会提示您为该项目命名。这样做,你应该全部成立。如上所述,通过在电子表格中进行一些编辑来尝试脚本。 – JPV 2014-11-24 18:43:52