【问题标题】:How to count cells with data如何计算包含数据的单元格
【发布时间】:2021-01-21 10:07:20
【问题描述】:

我正在从我指定的范围内获取值。但是有没有办法计算这些值? 我正在使用这种方法从工作表中获取值。

spreadsheetId :=""
range2 :=""
valueRenderOption := "FORMATTED_VALUE"

resp, err :=sheetsService.Spreadsheets.Values.Get(spreadsheetId, range2).ValueRenderOption(valueRenderOption).Do()
if err != nil {
    log.Fatal(err)
}

【问题讨论】:

  • is there a way to count those values 是什么意思?
  • 比如,如果我在 A1:C1 范围内,我需要知道这个范围内的值的总数。
  • 如,这些单元格中有多少有数据?
  • 是的!这就是我要找的
  • 您能否提供 API 提供给您的示例响应?

标签: go google-sheets google-sheets-api


【解决方案1】:

修改点:

  • 对于sheetsService.Spreadsheets.Values.Get(spreadsheetId, range2).ValueRenderOption(valueRenderOption).Do(),当A1:C1range2时,返回值为{"majorDimension":"ROWS","range":"A1:C1","values":[["###","###","###"]]}。在这种情况下,resp.Values 是二维数组。这样,len(resp.Values) 返回1。我认为这是您的问题的原因。

当你想从sheetsService.Spreadsheets.Values.Get(spreadsheetId, range2).ValueRenderOption(valueRenderOption).Do()检索单元格总数时,下面的修改怎么样?

修改脚本:

resp, err := sheetsService.Spreadsheets.Values.Get(spreadsheetId, range2).ValueRenderOption(valueRenderOption).Do()
if err != nil {
    log.Fatal(err)
}
count := 0
for _, e := range resp.Values {
    count += len(e)
}
fmt.Println(count)
  • 在这种情况下,当A1:C1 用于range2 时,会返回3

注意:

  • 例如,当您要检索非空单元格的总数时,也可以使用以下脚本。

      resp, err := sheetsService.Spreadsheets.Values.Get(spreadsheetId, range2).ValueRenderOption(valueRenderOption).Do()
      if err != nil {
          log.Fatal(err)
      }
      count := 0
      for _, e := range resp.Values {
          for _, f := range e {
              if f != "" {
                  count++
              }
          }
      }
      fmt.Println(count)
    
  • 在这个修改后的脚本中,它假设您已经能够使用 Sheets API 从 Google 电子表格中检索值。请注意这一点。

参考:

【讨论】:

  • 这个方法真的解决了我这个问题!谢谢!
  • 哦,还有这个。有没有一种方法可以从我正在检索值的单元格中显示?就像我正在制作范围 A1:C1,然后想要显示所有单元格,这样它就会像 A1、B1、C1 一样?
  • @WalterFox 感谢您的回复。我很高兴你的问题得到了解决。关于你的新问题,我想支持你。但是,我必须为我糟糕的英语水平道歉。从您对新问题的评论中,我无法理解您的目标。我为此道歉。为了正确理解你的新问题,我可以问你目标的细节吗?通过这个,我想试着理解它。
  • 例如,我有一系列值 A1:C1。有没有办法获取此范围内所有单元格的名称列表。所以对于这个例子,它将是 A1, B1, C1
  • @WalterFox 感谢您的回复。我不得不再次为我糟糕的英语水平道歉。从您的回复中,我仍然无法理解您的新问题。我为此道歉。那么您可以通过包含更多信息将其作为新问题发布吗?这样,它将帮助包括我在内的用户思考解决方案。如果你能合作解决你的新问题,我很高兴。可以合作解决吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多