【问题标题】:Google Sheets, remove leading apostrophe in cells automatically谷歌表格,自动删除单元格中的前撇号
【发布时间】:2020-12-25 05:39:32
【问题描述】:

我正在处理一个需要 Google 表格从 iOS 应用程序接收数据的项目。该应用程序扫描条形码并将时间戳和代码弹出到工作表中。如果你看一下这张纸,它似乎很好。

A B
2020-09-07 08:42:50 1234
2020-09-06 08:42:49 5678
2020-09-05 08:42:48 9101

如果您单击任何单元格,则每个单元格的值前面都有一个 '。

A B
'2020-09-07 08:42:50'1234
'2020-09-06 08:42:49 '5678
'2020-09-05 08:42:48'9101

随着扫描的进行,工作表将不断被填充。我正在寻找一种自动从每个单元格中删除撇号 (') 的解决方案。

谢谢!

【问题讨论】:

  • 您想使用公式或脚本中包含的内容删除撇号?如果你想要后者,到目前为止你尝试过什么?
  • 更好的方法是修复输入/ios应用程序,它将数据作为字符串发送
  • function removeApos() { const ss=SpreadsheetApp.getActive(); const sh=ss.getSheetByName('Sheet1'); const rg=sh.getRange(2,1,sh.getLastRow()-1,2); const vs=rg.getDisplayValues(); vs.map(function(r,i){ if(r[0].slice(0,1)=="'")r[0].splice(0,1); if(r[1].slice(0,1)=="'")r[1].splice(0,1); }); rg.setValues(vs); }
  • 其实我用了单引号,我测试了一下。它有效。
  • @Cooper 我明白了。我刚刚测试过,在我的环境中,我似乎无法重现。 getDisplayValues 和 getValues 中都缺少 '

标签: google-apps-script google-sheets


【解决方案1】:

撇号' 前缀只是请求不将其中的数据解析为其他类型。

解决问题的更好方法是修复 input/ios 应用程序,该应用程序专门将数据作为字符串/原始数据发送。如果应用使用 sheet api,valueInputOption 需要设置为 USER_ENTERED 而不是 RAW

或者,您可以使用time triggers 来清除使用range.clearformatOnly:true。如果这不起作用,您应该明确地将setNumberFormat 指定为所需的特定格式:0 用于数字,mm-dd-yyyy 用于日期等等。

【讨论】:

    【解决方案2】:

    如何使用公式删除单元格中的前撇号

    自从comment

    您想使用公式或脚本中的内容删除撇号?

    没有回答,我认为您也不会介意公式解决方案。


    您可以使用任一查询公式

    =QUERY(A2:B)

    或数组公式

    =ARRAYFORMULA(A2:B)

    +-------------------------------+------------------------------+
    |        Original Data          | Using  =QUERY(A2:B)          |
    |                               | Or     =ARRAYFORMULA(A2:B)   |
    +-----------------------+-------------------------------+------+
    | `07/09/2020 08:42:50  | `1234 | 07/09/2020 08:42:50   | 1234 |
    | `06/09/2020 08:42:49  | `5678 | 06/09/2020 08:42:49   | 5678 |
    | `05/09/2020 08:42:48  | `9101 | 05/09/2020 08:42:48   | 9101 |
    +-----------------------+-------+-----------------------+------+
    

    编辑
    (在comment之后)

    但单元格的类型(=type()) 没有改变。

    我命令将值从文本更改为可以使用的数字

    =ARRAYFORMULA(IF(A2:B<>"",A2:B*1,))

    只需确保相应地格式化日期时间值。

    使用的功能:

    【讨论】:

    • 对此进行测试,即使=A2:B 似乎也有效。但是单元格的类型(=type())没有改变。
    • @TheMaster “但是单元格的类型(=type())没有改变”。你可能的意思是它仍然是一个文本? “对此进行测试,即使=A2:B 似乎也有效。” 实际上它不会。它需要是一个数组。
    • 道歉。你说得对。我在之前的评论中错过了大括号。应该是={A2:B}您可能是说它仍然是文本? 是的。我认为这首先是撇号 ' 的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多