Excel::Templateを使用して、perl経由で一連のExcelファイルを生成しています。しかし、現在の列でSUM
関数を実行する必要があります。私はExcel SUM現在の列(Excel :: Template経由)
=SUM(3:15)
を行うことができます知っているが、それは、行3-15でALL列の合計を提供します。私がやろうとしていることを簡単にする方法はありますか?列C、
=SUM(C3:C15)
については
Excel::Templateを使用して、perl経由で一連のExcelファイルを生成しています。しかし、現在の列でSUM
関数を実行する必要があります。私はExcel SUM現在の列(Excel :: Template経由)
=SUM(3:15)
を行うことができます知っているが、それは、行3-15でALL列の合計を提供します。私がやろうとしていることを簡単にする方法はありますか?列C、
=SUM(C3:C15)
については
=sum(indirect(concatenate(address(<row_start>,column()),":")&address(<row_end>,column())))
は私が必要とする正確に何を私に与えます。どのように動作するのかは正確にはわかりませんが、見つかったMrExcel.com
ので、= SUM(...)は、あなたが実行する前にそれを知っていない場合は、列をパラメータする必要があり、単なる文字列です。例えば
$str = "=SUM(" . col_char . "3:" . col_char . "15)";
私には列の文字は提供されていません。それ以外の場合、これは簡単な作業になります。 –
Excel VBAには、アクティブなブック、アクティブなワークシート、アクティブな列、およびアクティブなセルを判別する方法があります。あなたのPerl APIもこれを持っている可能性があります。私はあなたの質問を誤解して申し訳ありません。 – ktm5124
column()関数は現在の列の番号を取得します。したがって、セルA3の式として "= column()"を入れた場合、 "1"になります)。 address()関数は、行番号と列番号(3,3→ "$ D $ 3")に基づいて、優れたアドレス文字列を返します。 Concatenate()は文字列を結合します( ":"は最初のアドレスと2番目のアドレスを範囲参照にします)。 Indirect()は、 "A1:D1"のような文字列を目的の文字列のセル/範囲参照に変更します。最後に、sum()は範囲参照をとり、値を加算します。 –