Libreoffice:通过FIND(),LOOKUP()或EXACT()引用另一个工作表中的单元格?

时间:2013-03-28 16:13:08

标签: libreoffice calc libreoffice-basic

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

我要做的是从另一个工作表中获取值,方法是搜索相邻单元格中的特定值。

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

Worksheet1

Workseet1

和Worksheet2

enter image description here

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

到目前为止,我没有太多运气,但这是我一直在努力的方法:

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

这很可能是错误的,但我试图表达逻辑,即“在Worksheet2中,从Worksheet1中找到值:$ A1,并从工作表2中获取值:$ B1”

基本上它归结为我还不了解这种语言的语法和范例。

关于如何完成我上面尝试做的任何想法?

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

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可能需要尝试一种名为VLOOKUP的功能。

您的示例的语法是:

=VLOOKUP(A1,'Worksheet2'.B1:C12,1)

答案 1 :(得分: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