2

我正在尝试学习 LibreOffice 的脚本功能,并且有一个我无法弄清楚的特定场景。

我要做的是通过在相邻单元格中搜索特定值来从另一个工作表中获取值。

例如,假设我有两个工作表:

工作表1

工作表1

和工作表2

在此处输入图像描述

我想要做的是用来自 Worksheet2 的 B 列的相关值填充 Worksheet1 的每个值,B 列。我尝试这样做的方法是编写一个语句,在 Worksheet1 中查找并使用月份作为针对 Worksheet2,C 列的搜索条件。

到目前为止,我的运气并不好,但这是我一直在尝试的:

='Worksheet2'.$C.FIND('Worksheet1'.$A1).$B1

这很可能是错误的,但我试图表达逻辑,即“在 Worksheet2 中,从 Worksheet1 中找到值:$A1,然后给我来自 Worksheet2:$B1 的值”

本质上归结为我还不了解这种语言的语法和范式。

关于如何完成我上面想做的事情有什么想法吗?

另外,我会对有关该语言的在线教程的任何链接感兴趣(LibreOffice Basic?)

提前致谢!

4

2 回答 2

3

您可能想尝试一个名为VLOOKUP的函数。

您的示例的语法是:

=VLOOKUP(A1,'Worksheet2'.B1:C12,1)
于 2013-05-16T14:43:08.150 回答
1

我只是根据你的问题调整我的例行程序。它应该可以工作......假设两张纸都没有空行:

Sub MergeSheets

Dim Ind as Integer
Dim oSheet1, oSheet2
Dim oDocument as Object

  oDocument = thisComponent

  ' Destination Sheet
  dSheet = oDocument.getSheets().getByName("Worksheet1")

  ' Origin Sheet
  oSheet = oDocument.getSheets().getByName("Worksheet2")

  oCount = 0
  oCell = oSheet.getCellByPosition(0,oCount)
  while oCell.Formula <> ""

    ' Search for the matching line
    dCount = 0 
    dCell = dSheet.getCellByPosition(2,0)
    while dCell.Formula <> "" and dCell.Formula <> oCell.Formula
       dCount = dCount + 1
       dCell = dSheet.getCellByPosition(2,dCount)
    wend

    ' Set Value to the destination cell
    ' If Key was not found, the last empty line will be used
    fCell = dSheet.getCellByPosition(1,dCount)
    if fCell.Formula = ""
       fCell.Formula = "="+oSheet.getCellByPosition(1,dCount).Formula
    else
       fCell.Formula = fCell.Formula+'+'+oSheet.getCellByPosition(1,dCount).Formula
    end if

    oCount = oCount + 1
    oCell = oSheet.getCellByPosition(0,oCount)

  wend

End Sub
于 2013-05-04T21:37:58.807 回答