2

私は LibreOffice のスクリプト機能を学習しようとしていますが、特定のシナリオを理解できていません。

私がやろうとしているのは、隣接するセルで特定の値を検索して、別のワークシートから値を取得することです。

たとえば、2 つのワークシートがあるとします。

ワークシート1

ワークシート1

そしてワークシート2

ここに画像の説明を入力

私がやろうとしているのは、ワークシート 1 の列 B の各値に、ワークシート 2 の列 B の関連する値を入力することです。ワークシート 2 の列 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 に答える