2017-05-15 16 views
1

一連の値を持つワークシートの範囲を開始したいとします。私は次のコードを持っています。値の配列を範囲に割り当てる

function initiate(address, values) { 
    return Excel.run(function (ctx) { 
     var sheet = ctx.workbook.worksheets.getActiveWorksheet(); 
     var range = sheet.getRange(address); 
     var range.values = values; 
     return ctx.sync() 
    } 
} 

私のテストでは、valuesaddressとまったく同じ寸法(すなわち、高さ、幅)を持っているときにのみ、またはvaluesは単一の値であるとき、これはを働くことを示しています。それ以外の場合は、エラーが発生します。

誰でも確認できますか?

の場合addressvaluesのサイズに合わせて調整する必要があります。 valuesの次元を得るのは簡単ですが、たとえば、1左上のセル+1行の数+1の列、または1つの左上のセルと1つの右下のセルから範囲を取得することはできません。find a function

何か不足していますか?

答えて

0

VBAではRange.Resizeを使用します。 OfficeJSに関数が呼び出されるように思わgetResizedRange

[G]現在のRangeオブジェクトに類似するが、その右下隅とRangeオブジェクトは、行および列の一部の数で拡大(または縮小)ETS 。

残念ながらそれはデルタ値を受け入れますので、あなたは現在の範囲の大きさとターゲットの大きさの違いを計算する必要があります。あなたはcols細胞によってrowsの範囲を取得したい場合たとえば、あなたはCompuChipが言ったように

var originalRange = sheet.getRange(address); 
var range = originalRange.getResizedRange(
    rows - originalRange.rowCount, cols - originalRange.columnCount); 
+0

ありがとうございます。「originalRange.colCount」は「originalRange.columnCount」である必要があります... – SoftTimur

1

の線に沿って何かを試みることができる 、範囲のサイズを変更するためのAPI(まだ)ありません特にアブソリュートサイズですが、今後の予定です。言っ

:あなたは、配列を持っている場合は、単に1つのセルで始まり、その後、列-マイナス1(array[0].length - 1)に続いて、アレイの行カウントマイナス-1(すなわち、array.length - 1)によってサイズを変更

const values = [ 
    [1, 2, 3], 
    ["Hello", "Bonjour", "Привет"] 
] 

await Excel.run(async (context) => { 
    const sheet = context.workbook.worksheets.getActiveWorksheet(); 
    const range = sheet.getRange("D3").getResizedRange(
     values.length - 1, values[0].length - 1); 
    range.values = values; 
    await context.sync(); 
}); 

新しいスクリプトラボ(https://aka.ms/getscriptlab)では、このスニペットを文字通り5回のクリックで試すことができます。 Script Labアドイン(無料)をインストールし、ナビゲーションメニューの「インポート」を選択して、次のGIST URLを使用してください:https://gist.github.com/Zlatkovsky/6bc4a7ab36a81be873697cab0fa0b653more info about importing snippets to Script Labを参照してください。

+0

答えとツールをありがとう... – SoftTimur

関連する問題