इसे छोड़कर कंटेंट पर जाएं

セルの値の取得と書き込み

यह कंटेंट अभी तक आपकी भाषा में उपलब्ध नहीं है।

ここではオフィススクリプトを使って、特定のセルの値を取得する方法と、セルに値を書き込む方法をサンプルコードと併せて解説します。

まずは値を読み書きするセルを取得します。

ExcelScript.WorksheetオブジェクトのgetRangeメソッドにB2のような A1 形式の番地を指定すると、そのセルを表すExcelScript.Rangeオブジェクトが返されます。

/**
* @param address 範囲の番地(A1 形式)
*/
ExcelScript.Worksheet.getRange(address?: string): Range;

ExcelScript.Rangeオブジェクトに含まれている、getValueメソッドを使用します。

/**
* @return セルの値(文字列・数値・真偽値のいずれか)
*/
ExcelScript.Range.getValue(): string | number | boolean;

数値が入力されたセルからは数値が、文字列が入力されたセルからは文字列が返されます。値が入力されていないセルからは空文字('')が、エラーになっているセルからは#DIV/0!のようなエラーの文字列が返されます。

以下のシートのB2セルの値を取得するサンプルコードです。

ABC
1商品単価数量
2リンゴ1203
3ミカン805
  • Sheet1
  • B2getRange('B2') で取得するセル
セルの値を取得するサンプル
function main(workbook: ExcelScript.Workbook) {
/** 対象シート名 */
const sheetname = 'Sheet1';
/** 対象ワークシート */
const sheet = workbook.getWorksheet(sheetname);
if (!sheet) {
throw `${sheetname}という名前のワークシートは存在しません`;
}
/** B2 セルの値 */
const value = sheet.getRange('B2').getValue();
console.log(value); // 120
}

getValueの返り値はstring | number | boolean型のため、そのままでは数値として計算できません。例えばvalue * 2と書くと、文字列や真偽値の可能性があるためエディター上でエラーになります。

計算に使う場合は、typeofで数値であることを確かめてから使います。確かめた後は、valueはnumber型として扱われます。

数値であることを確かめてから計算する
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
/** B2 セルの値 */
const value = sheet.getRange('B2').getValue();
if (typeof value !== 'number') {
throw `B2セルの値が数値ではありません: ${value}`;
}
console.log(value * 2); // 240
}

ExcelScript.Rangeオブジェクトに含まれている、setValueメソッドを使用します。

/**
* @param value 書き込む値(文字列・数値・真偽値)
*/
ExcelScript.Range.setValue(value: any): void;

返り値はありません。引数に指定した値が、対象のセルに書き込まれます。

=で始まる文字列を指定すると、数式として扱われます。

D1セルに見出しを書き込むサンプルコードです。

セルに値を書き込むサンプル
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange('D1').setValue('確認状況');
}

複数のセルに同じ値を書き込む

Section titled “複数のセルに同じ値を書き込む”

複数のセルを含む範囲に対してsetValueを実行すると、範囲内のすべてのセルに同じ値が書き込まれます。

以下のサンプルコードを実行すると、D2:D3の 2 つのセルに未確認が書き込まれます。

複数のセルに同じ値を書き込むサンプル
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange('D1').setValue('確認状況');
sheet.getRange('D2:D3').setValue('未確認');
}
ABCD
1商品単価数量確認状況
2リンゴ1203未確認
3ミカン805未確認
  • Sheet1

サンプルコードを実行した後のシート

  • D1getRange('D1').setValue('確認状況')
  • D2:D3getRange('D2:D3').setValue('未確認')

セルごとに異なる値を書き込む場合は、setValuesメソッドを使用します。