【问题标题】:How to add cell elements of 2 columns in libreOffice Calc Macro?如何在 libreOffice Calc 宏中添加 2 列的单元格元素?
【发布时间】:2021-05-18 11:14:02
【问题描述】:

我有 2 列,即列 G 和列 H。每一个都有不同的数值,直到1449 行。现在,我想在每一行添加相应的单元格元素以获得一个新列。是否有任何功能可以做到这一点,因为简单的+ 在.DataArray() 功能中不起作用。

Sub updateSTOCK

  Dim my_range,my_range2

  my_range=ThisComponent.Sheets(3).getCellRangebyName("H5:H1449")
  my_range2=ThisComponent.Sheets(3).getCellRangebyName("G5:G1449")

  my_range.Data=my_range.Data+my_range2.Data    ***----> This line gives error***

End Sub

【问题讨论】:

  • 欢迎您!您想用 H 和 G 的总和替换 H 列中的单元格吗?而且您不想使用选择性粘贴 - 添加手动执行此操作?

标签: libreoffice-calc libreoffice-basic


【解决方案1】:

在您的代码中,您必须对每一行执行加法;不支持对范围值的分组操作

Sub updateSTOCK()
Dim oSheets As Variant
Dim oSheet3 As Variant
Dim oCellRangeByName As Variant
Dim oDataArray As Variant
Dim i As Long
    oSheets = ThisComponent.getSheets()
    oSheet3 = oSheets.getByIndex(3)
    oCellRangeByName = oSheet3.getCellRangeByName("H5:G1449")
    oDataArray = oCellRangeByName.getDataArray()
    For i = LBound(oDataArray) To UBound(oDataArray)
        oDataArray(i)(1) = oDataArray(i)(0) + oDataArray(i)(1)
    Next i
    oCellRangeByName.setDataArray(oDataArray)
End Sub

【讨论】:

  • 非常感谢!我一直在寻找没有任何循环的直接方式。
  • 没有任何循环?没问题!使用宏记录器记录此步骤:选择范围 G5:G1449,复制,选择范围 H5:H1449,使用选项添加选择性粘贴(如第一条评论中所述)。它可以在没有任何循环的情况下工作
  • 现在我有多个选项来执行任务。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多