「Officeスクリプトでセルのデータをクリアしたいけど、どうすればいいんだろう…」
そんな疑問を持っていませんか?
・全てのセルを一括で削除したい
・値のみ削除を行いたい
その場合は、Officeスクリプトの「clear()メソッド」を
使用すると解決します!
この記事では、Officeスクリプトの「clear()メソッド」を使って、セル内のデータや書式を簡単にクリアする方法を詳しく解説します。
Officeスクリプトのclear()メソッドを使えば、セル内のデータ、書式、リンクをまとめて削除したり、値のみや書式のみを選択してクリアすることができます。
使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。
気になる部分だけでもぜひご覧いただければと思います。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を読むとできるようになること
この記事を読むことで、次のことができるようになります。
- Officeスクリプトの clear() メソッドの基礎を習得する
- clear()メソッドと合わせて使用される、セル範囲の取得方法を学習する
- clear()メソッドの注意ポイントを把握する
- clear()メソッドの実際の使用方法を確認する
Officeスクリプトでセルをクリアする方法:clear()メソッドの基本を解説
Officeスクリプトのclear()
メソッドは、Excelシート内のセルの内容や書式を一度にクリアし、セルをリセットするための便利なメソッドです。
これにより、セル内のデータ、書式、リンクなどをすべて削除して、完全に初期状態に戻すことができます。
たとえば、既存のデータを削除して新しいデータを入力する前に、セルをリセットしたい場合に役立ちます。
- 月次報告書のデータリセット
- 毎月の報告書で前回のデータを削除し、新しいデータを入力しやすくします(値のみをクリア)。
- 書式リセットで見やすいシートに
- フォントや背景色などが混在している場合、書式だけをクリアしてセルの見た目を整えられます(書式のみをクリア)。
- リンク削除で資料をシンプルに
- 不要なハイパーリンクだけを削除し、データと書式はそのまま残せます(リンクのみをクリア)。
- シート全体を一括クリア
- テンプレートを初期状態に戻す場合に便利。内容と書式をすべて削除し、セルを空にできます(すべてをクリア)。
Officeスクリプトでセルをクリアするclear()メソッドの使い方
clear()メソッドは、セルの内容 (データ)だけでなく、セルの書式設定も含めてクリアすることができます。
clear()メソッドの構成
- range (必須)
- clear()メソッドを適用するセル・範囲を指定します。
- clear() (必須)
- 指定したセル範囲のクリアを実行します。
- オプション (任意)
- すべてのデータ削除、または値のみ削除などを指定できます。
⇒ 「Clear()メソッドのオプション一覧」を見る。
- すべてのデータ削除、または値のみ削除などを指定できます。
より詳しい情報は、ExcelScript.ClearApplyTo enumを参照してみてください。
OfficeスクリプトのClear()メソッドで指定できるオプション一覧
Clear()メソッドのオプション一覧を紹介します。
このオプションを指定することで、削除する範囲を指定することができます。
メソッド名 | 説明 |
---|---|
.clear() | セル内のすべてのデータ、書式、 ハイパーリンクをクリアします。 |
.clear( ExcelScript.ClearApplyTo.all ) | セル内のすべてのデータと書式をクリアします。 |
.clear( ExcelScript.ClearApplyTo.contents ) | セルのデータ (テキスト、数値、 ハイパーリンク) だけをクリアし、書式は保持する。 |
.clear( ExcelScript.ClearApplyTo.formats ) | セルの書式 (フォント、色、罫線など)だけをクリアし、 データとハイパーリンクは保持します。 |
.clear( ExcelScript.ClearApplyTo.hyperlinks ) | セル内のハイパーリンクだけをクリアし、 データを書式は保持します。 |
.clear()メソッドの解説 (セル内のすべてのデータをクリア)
clear()メソッドは、セル範囲内のすべてのデータ(内容、書式、ハイパーリンクなど)を一括でクリアします。
これは、セルを完全にリセットしたい場合に非常に便利です。
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// セル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セルのデータ、書式、ハイパーリンクをすべて削除
range.clear();
}
この例では、セル範囲「B2」から「D4」までのデータと書式がすべて削除され、セルはデフォルトの状態に戻ります。
※ただし、行や列の幅は変更されません。
.clear(ExcelScript.ClearApplyTo.all)メソッドの解説 (セルのすべてのデータと書式をクリア)
clear()メソッドの ExcelScript.ClearApplyTo.all
オプションを使うと、指定したセル範囲内のすべてのデータ、書式、ハイパーリンクを一括でクリアできます。
セルを完全にリセットし、内容も見た目も初期状態に戻したい場合に非常に便利です。
※clear()と動作は同じものです。
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// セル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セルのデータ、書式、ハイパーリンクをすべて削除
range.clear(ExcelScript.ClearApplyTo.all);
}
このコードでは、セル範囲「B2」から「D4」までのデータ、書式、ハイパーリンクがすべてクリアされます。
これにより、セル内の内容や見た目もリセットされ、空の状態に戻ります。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。
.clear(ExcelScript.ClearApplyTo.contents)メソッドの解説 (セル内の値のみクリア)
clear()メソッドの ExcelScript.ClearApplyTo.contents
オプションを使うと、指定したセル範囲内のデータ(値)のみをクリアし、書式設定やハイパーリンクは保持したままにできます。
データだけをリセットし、セルの見た目はそのまま残したい場合に便利です。
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// セル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル内のデータのみ削除(書式とハイパーリンクは保持)
range.clear(ExcelScript.ClearApplyTo.contents);
}
このコードでは、セル範囲「B2」から「D4」までのデータ(テキストや数値)がクリアされますが、セルの書式(背景色やフォント)やハイパーリンクはそのまま保持されます。
データのみを削除したい場合に適しており、再入力が必要なテンプレートの準備などで役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。
.clear(ExcelScript.ClearApplyTo.formats)メソッドの解説 (セル内の書式のみクリア)
clear()メソッドの ExcelScript.ClearApplyTo.formats
オプションを使うと、指定したセル範囲内の書式設定のみをクリアし、セルのデータやハイパーリンクはそのまま保持することができます。
セルの内容は残したまま、フォントや背景色、罫線などの書式をリセットしたい場合に便利です。
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// セル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セルの書式のみ削除(データとハイパーリンクは保持)
range.clear(ExcelScript.ClearApplyTo.formats);
}
このコードでは、セル範囲「B2」から「D4」までの背景色、フォントスタイル、罫線などの書式がクリアされますが、セル内のデータやハイパーリンクは保持されます。
特に、データはそのままでセルの見た目だけをリセットしたいときや、書式の統一が必要な場合に役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。
.clear(ExcelScript.ClearApplyTo.hyperlinks)メソッドの解説 (セル内のハイパーリンクのみクリア)
clear()メソッドの ExcelScript.ClearApplyTo.hyperlinks
オプションを使うと、指定したセル範囲内のハイパーリンクのみをクリアし、セルのデータや書式設定はそのまま保持できます。
しかし、文字の色 (青色)や下線は元に戻りません。
元に戻したい場合は、手動で戻す必要があります。
⇒ 文字や、下線まで元に戻したい場合は「使用例3: ハイパーリンクを削除し、文字色や下線をデフォルトに戻す」で解説を行っています。
リンクだけを削除して、セルの内容や見た目をそのまま残したい場合に便利です。
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// セル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル内のハイパーリンクのみ削除(データと書式は保持)
range.clear(ExcelScript.ClearApplyTo.hyperlinks);
}
このコードでは、セル範囲「B2」から「D4」までのハイパーリンクがクリアされますが、セル内のデータや書式はそのまま保持されます。
リンクだけを削除したいときや、リンクが不要になった資料の整理などに役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。
Officeスクリプトでのセル範囲指定方法|clear()メソッドと組み合わせて使う基本
Officeスクリプトでclear()メソッドを使ってデータをクリアする際、指定したいセル範囲によってコードの書き方が少し異なります。
clear()メソッドは、セル範囲を柔軟に指定できるため、必要に応じてデータや書式を効率よくクリアできます。
セル範囲指定例1 : 特定のセル範囲を指定する方法
特定のセル範囲を指定する場合、getRange("開始セル:終了セル")
を使います。
たとえば、セル範囲「B2」をクリアする場合は次のように記述します。
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// 指定範囲のすべてのデータ、書式、リンクをクリア
range.clear(ExcelScript.ClearApplyTo.all);
}
セル範囲指定例2 : 行や列全体を指定する方法
特定の行全体や列全体をクリアしたい場合、getRange("行番号:行番号")
またはgetRange("列番号:列番号")
を使います。
行全体をクリアする方法
たとえば、2行目全体のデータや書式をクリアしたい場合は、以下の様にgetRange("行番号:行番号")
を指定します。
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let rowRange: ExcelScript.Range = sheet.getRange("2:2");
// 2行目のすべての内容と書式をクリア
rowRange.clear(ExcelScript.ClearApplyTo.all);
}
列全体をクリアする方法
たとえば、B列全体をクリアしたい場合は、以下の様にgetRange("列番号:列番号")
を指定します。
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let columnRange: ExcelScript.Range = sheet.getRange("B:B");
// B列のすべての内容と書式をクリア
columnRange.clear(ExcelScript.ClearApplyTo.all);
}
セル範囲指定例3 : シート全体を指定する方法
シート全体のデータをクリアする場合、getUsedRange()
を使うと、使用されているすべてのセル範囲を自動的に取得できます。
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let usedRange: ExcelScript.Range = sheet.getUsedRange();
// シート全体の内容と書式をクリア
usedRange.clear(ExcelScript.ClearApplyTo.all);
}
しかし、getUsedRange()
メソッドは、「書式設定された空白セル」や「空白のままのセル」も「使用されているセル」として認識するため、最終行や最終列がすれて思ったように取得できないことがあります。
「空白セル」や「書式のみのセル」を無視して最終行・最終列を取得したい場合は、関数を自作し使用する必要があります。
最終行・最終列の取得方法については、別記事で解説を行っています。
合わせてご覧ください。
セル範囲指定例4 :動的なセル範囲を指定する方法
データ量が変動する場合、特定のセルから特定の行数や列数を指定して範囲を動的に設定する方法が便利です。
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let dynamicRange: ExcelScript.Range = sheet.getRange("B2").getResizedRange(1, 2);
// B2から2行×3列の範囲をクリア
dynamicRange.clear(ExcelScript.ClearApplyTo.all);
}
Officeスクリプト「clear()メソッド」の注意ポイント
clear()メソッドは、Excelシート上のデータや書式を一括でクリアするため、非常に強力な操作です。
以下のポイントに気をつけて使うことで、意図せずデータを削除してしまうリスクを減らせます。
注意1 : クリア対象の範囲を正確に指定する
clear()メソッドを使う際は、対象のセル範囲を間違えないように正確に指定することが重要です。
たとえば、使用中のセル範囲だけをクリアするには getUsedRange()
や最終行・最終列を求める関数を使いましょう。
例:シート内の使用中の範囲のみをクリア
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// 使用中のセル範囲を取得して、すべてのデータと書式をクリア
let usedRange: ExcelScript.Range = sheet.getUsedRange();
usedRange.clear(ExcelScript.ClearApplyTo.all);
}
解説
このコードは、シート内で実際にデータが入力されているセル範囲のみをクリアします。
範囲が自動的に決まるため、不要なセルまでクリアされるリスクを減らせます。
注意2 : 必要なデータが消えないようにバックアップを取る
重要なデータをクリアする前には、別シートや変数にバックアップを取っておくと安心です。
例:クリア対象のデータを別シートにバックアップしてからクリア
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let backupSheet: ExcelScript.Worksheet = workbook.addWorksheet("Backup");
// 使用中の範囲を取得
let usedRange: ExcelScript.Range = sheet.getUsedRange();
// データをバックアップシートにコピー
backupSheet.getRange("A1").copyFrom(usedRange);
// 元のシートでデータと書式をクリア
usedRange.clear(ExcelScript.ClearApplyTo.all);
}
解説
このコードでは、クリアする前に「Backup」という新しいシートを作成し、元のシートからデータをコピーしています。
こうすることで、必要があればデータを簡単に復元できます。
注意3-1 : 行や列の幅は変更されない点に注意
clear()メソッドを使用すると、セルの内容や書式がリセットされますが、行や列の幅は変更されません。
幅を初期状態に戻したい場合は、setColumnWidth()
やsetRowHeight()
で調整が必要です。
例:列幅を初期状態に戻す
function main(workbook: ExcelScript.Workbook): void {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル範囲の内容をすべてクリア
range.clear(ExcelScript.ClearApplyTo.all);
// クリア後に列幅を標準幅に戻す
range.getColumn(0).getFormat().setColumnWidth(8.43); // Excelの標準幅
}
解説
このコードは、クリアした後に、setColumnWidth(8.43)
で、列の幅をExcelの標準幅に戻しています。
行や列の幅も初期化したい場合は、getRow()
やgetColumn()
で対象範囲を指定して行います。
注意3-2 : さらに簡単に! delete()メソッドの活用
データとともに行や列そのものを削除し、列幅や行幅も自動調整したい場合は、clear()メソッドの代わりに delete() メソッドを使うと便利です。
delete()メソッドは指定された行や列を削除し、周囲のセルが自動で詰められるため、幅の調整が不要です。
例:3行目を削除し、下の行を詰める
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
let rowToDelete: ExcelScript.Range = sheet.getRange("3:3");
// 3行目を削除して、下の行を上にシフト
rowToDelete.delete(ExcelScript.DeleteShiftDirection.up);
}
解説
このコードでは、3行目を完全に削除し、下の行を自動で詰めています。
delete()メソッドを使うことで行や列の調整が自動化され、作業が簡単になります。
Officeスクリプト「clear()メソッド」の使用例をご紹介
それでは、データ削除の使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
この使用例は以下のエクセルを使用して紹介します。
- セル範囲「B2:D4」に表があります。
- すべてのセルに、罫線・ハイパーリンクが設定されています。
Officeスクリプトの基礎から応用までを効率よくしっかり学習したい方には、UdemyのOfficeスクリプト講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。
使用例1: セル全体をクリアする 「ExcelScript.ClearApplyTo.all」
この例では、clear()メソッドを使用してセル範囲内のデータ、書式、ハイパーリンクをすべてクリアする方法を紹介します。
この操作により、指定したセル範囲が完全にリセットされ、データの初期化やテンプレートの準備に役立ちます。
コード例 | セル範囲全体をクリアする
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// クリアするセル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル範囲のデータ、書式、ハイパーリンクをすべてクリア
range.clear(ExcelScript.ClearApplyTo.all);
}
処理結果
コードの動作概要
getRange("B2:D4")
メソッドを使って、クリア対象のセル範囲「B2:D4」を指定します。
この範囲は、データの初期化やテンプレートをリセットする目的で設定できます。
clear(ExcelScript.ClearApplyTo.all)
を使用して、指定範囲内のすべてのデータ、書式、ハイパーリンクを一括でクリアします。
これにより、セル範囲が完全にリセットされ、初期状態に戻ります。
このコードで使用している機能
- clear(ExcelScript.ClearApplyTo.all) (セル内のすべてのデータと書式をクリア)
- 指定されたセル範囲内のデータ、書式、ハイパーリンクをすべてクリアします。
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- function main(workbook: ExcelScript.Workbook) {
- 関数「main」を定義し、スクリプトの実行内容を設定します。
「workbook」はExcelのブックを操作するための引数です。
- 関数「main」を定義し、スクリプトの実行内容を設定します。
- let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
- getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
- let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
- 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
- range.clear(ExcelScript.ClearApplyTo.all);
- 「clear(ExcelScript.ClearApplyTo.all)」を使って、指定したセル範囲のすべてのデータ、書式、ハイパーリンクを一括でクリアします。
- }
- 関数「main」の終了を示しています。
総括・ポイント
この使用例では、clear()メソッドのExcelScript.ClearApplyTo.all
オプションを使用して、セル範囲内のすべてのデータ、書式、ハイパーリンクをクリアする方法を示しています。
範囲全体のリセットが簡単に行えるため、データ初期化やテンプレート作成の際に非常に便利です。
使用例2: セル範囲内の値のみをクリアする 「ExcelScript.ClearApplyTo.contents」
この例では、clear()メソッドの「ExcelScript.ClearApplyTo.contentsオプション」を使用して、セル範囲内の値(データ)だけをクリアする方法を紹介します。
この操作により、セルの書式やハイパーリンクは保持されたまま、値のみがリセットされます。
テンプレートのデータをクリアして、書式をそのまま利用したい場合に便利です。
コード例 | セル範囲内の値のみをクリアする
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// 値のみをクリアするセル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル範囲内のデータのみをクリア(書式とハイパーリンクは保持)
range.clear(ExcelScript.ClearApplyTo.contents);
}
処理結果
コードの動作概要
getRange("B2:D4")
メソッドを使って、データをクリアする対象のセル範囲「B2:D4」を指定します。
この範囲内のデータのみをクリアし、書式やリンクを残したい場合に使用します。
clear(ExcelScript.ClearApplyTo.contents)
を使用して、指定範囲内のデータ(テキストや数値)だけをクリアします。
これにより、書式やリンクを保持したまま、内容のみをリセットできます。
このコードで使用している機能
- clear(ExcelScript.ClearApplyTo.contents) (セルのテキスト、数値、ハイパーリンクだけをクリア)
- 指定範囲のデータ(テキストや数値など)のみをクリアし、書式やハイパーリンクはそのまま保持します。
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- function main(workbook: ExcelScript.Workbook) {
- 関数「main」を定義し、スクリプトの実行内容を設定します。
「workbook」はExcelのブックを操作するための引数です。
- 関数「main」を定義し、スクリプトの実行内容を設定します。
- let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
- getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
- let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
- 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
- range.clear(ExcelScript.ClearApplyTo.contents);
- 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
書式やハイパーリンクはそのまま残り、データだけがクリアされます。
- 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
- }
- 関数「main」の終了を示しています。
総括・ポイント
この使用例では、clear()メソッドのExcelScript.ClearApplyTo.contents
オプションを使用して、セル範囲内のデータのみをクリアする方法を示しています。
書式やハイパーリンクを保持したままデータのみをリセットできるため、テンプレートのデータ更新などに非常に便利です。
使用例3: ハイパーリンクを削除し、文字色や下線をデフォルトに戻す「ExcelScript.ClearApplyTo.hyperlinks」
この例では、clear()メソッドを用いて、セル内のハイパーリンクを削除し、さらに文字色や下線もデフォルトに戻す方法を紹介します。
セル内のテキストを残しつつ、リンクや書式のみをクリアしたい場合に便利です。
コード例 | ハイパーリンクを削除し文字色と下線をリセット
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// 対象となるセル範囲 "B2:D4" を指定
let range: ExcelScript.Range = sheet.getRange("B2:D4");
// セル範囲内のハイパーリンクのみを削除
range.clear(ExcelScript.ClearApplyTo.hyperlinks);
// 文字色と下線の書式をリセット
range.getFormat().getFont().setColor("#000000"); // 文字色をデフォルトの黒に設定
range.getFormat().getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none); // 下線を削除
}
処理結果
コードの動作概要
getRange("B2:D4")
メソッドを使って、操作対象となるセル範囲「B2」から「D4」を指定します。
ここで指定された範囲内のハイパーリンクや書式を変更します。
clear(ExcelScript.ClearApplyTo.hyperlinks)
を使用して、指定範囲内のハイパーリンクのみを削除します。
データや書式はそのまま保持されます。
getFont().setColor("#000000")
を使って文字色をデフォルトの黒色に戻し、getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none)
を用いて下線を削除します。
このコードで使用している機能
- clear(ExcelScript.ClearApplyTo.hyperlinks) (セル内のハイパーリンクだけをクリア)
- 指定範囲内のハイパーリンクのみを削除します。
- setColor(“#000000”)
- 指定範囲内のフォントの色を黒(デフォルト)に戻します。
- setUnderline(ExcelScript.RangeUnderlineStyle.none)
- 下線を削除し、デフォルトの状態に戻します。
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- function main(workbook: ExcelScript.Workbook) {
- 関数「main」を定義し、スクリプトの実行内容を設定します。
「workbook」はExcelのブックを操作するための引数です。
- 関数「main」を定義し、スクリプトの実行内容を設定します。
- let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
- getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
- let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
- 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
- range.clear(ExcelScript.ClearApplyTo.hyperlinks);
- 「clear(ExcelScript.ClearApplyTo.hyperlinks)」を使用し、セル範囲内のハイパーリンクのみを削除します。
- range.getFormat().getFont().setColor(“#000000”);
- 「setColor(“#000000”)」でフォントの色をデフォルトの黒に設定します。
- range.getFormat().getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none);
- 「setUnderline(ExcelScript.RangeUnderlineStyle.none)」で下線を削除します。
- }
- 関数「main」の終了を示しています。
総括・ポイント
この使用例では、clear()メソッドの ExcelScript.ClearApplyTo.hyperlinks
オプションと書式設定の変更を組み合わせて、セル内のハイパーリンクを削除し、文字色と下線をデフォルトに戻す方法を紹介しています。
ハイパーリンクの除去と書式の統一が同時に行えるため、シンプルで読みやすい表を作成したい場合に役立ちます。
使用例4: 表データの最終行・最終列を自動で取得し、値のみをクリアする「ExcelScript.ClearApplyTo.contents」
この例では、clear()メソッドと最終行・最終列を動的に取得する関数を使って、表データの範囲を動的に指定し、値(データ)だけをクリアする方法を紹介します。
これにより、シートの構成が変わっても、データ範囲を自動で取得してクリアすることが可能です。
コード例 | 最終行・最終列を自動で取得して値のみをクリア
function main(workbook: ExcelScript.Workbook) {
let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
// 最終行と最終列を取得
let lastRow: number = getLastDataRow(sheet); // 最終行を取得する関数を呼び出し
let lastColumn: number = getLastDataColumn(sheet); // 最終行を取得する関数を呼び出し
// 動的に取得したセル範囲内のデータのみをクリア
let range: ExcelScript.Range = sheet.getRangeByIndexes(1, 1, lastRow - 1, lastColumn - 1); // B2から最終行・最終列まで
range.clear(ExcelScript.ClearApplyTo.contents);
}
// ↓ 正確に最終行を求める関数
function getLastDataRow(sheet: ExcelScript.Worksheet): number {
let usedRange: ExcelScript.Range = sheet.getUsedRange();
if (!usedRange) return 0;
let startRow: number = usedRange.getRowIndex();
let rowCount: number = usedRange.getRowCount();
let columnCount: number = usedRange.getColumnCount();
for (let i: number = rowCount - 1; i >= 0; i--) {
let rowIndex: number = startRow + i;
let range: ExcelScript.Range = sheet.getRangeByIndexes(rowIndex, 0, 1, columnCount);
let values = range.getValues()[0];
// 行内の各セルをチェック
if (values.some(cell => {
if (cell === null || cell === undefined) {
return 0;
}
if (typeof cell === 'string') {
return cell.trim() !== "";
}
return true; // 数値やブール値など、非文字列型はデータありと判断
})) {
return rowIndex + 1;
}
}
return 0;
}
// ↓ 正確に最終列を求める関数
function getLastDataColumn(sheet: ExcelScript.Worksheet): number {
let usedRange: ExcelScript.Range = sheet.getUsedRange();
if (!usedRange) return 0;
let startColumn: number = usedRange.getColumnIndex();
let rowCount: number = usedRange.getRowCount();
let columnCount: number = usedRange.getColumnCount();
for (let i: number = columnCount - 1; i >= 0; i--) {
let columnIndex: number = startColumn + i;
let range: ExcelScript.Range = sheet.getRangeByIndexes(0, columnIndex, rowCount, 1);
let values = range.getValues();
// 列内の各セルをチェック
if (values.some(row => {
let cell = row[0];
if (cell === null || cell === undefined) {
return 0;
}
if (typeof cell === 'string') {
return cell.trim() !== "";
}
return true; // 数値やブール値など、非文字列型はデータありと判断
})) {
return columnIndex + 1;
}
}
return 0;
}
処理結果
コードの動作概要
getLastDataRow(sheet)
およびgetLastDataColumn(sheet)
関数を使用して、表データの最終行と最終列を動的に取得します。
これにより、表のサイズが変動しても自動で範囲が調整されます。
getRangeByIndexes(1, 1, lastRow - 1, lastColumn - 1)
で動的に取得した範囲を指定し、clear(ExcelScript.ClearApplyTo.contents)
を使用して値(データ)のみをクリアします。
書式やリンクは保持されます。
このコードで使用している機能
- clear(ExcelScript.ClearApplyTo.contents) (セルのテキスト、数値、ハイパーリンクだけをクリア)
- 指定範囲のデータ(テキストや数値など)のみをクリアし、書式やハイパーリンクはそのまま保持します。
- getLastDataRow(sheet)およびgetLastDataColumn(sheet) (最終行・最終列の取得)
- 自作した最終行・最終列を自動で取得する関数。
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- function main(workbook: ExcelScript.Workbook) {
- 関数「main」を定義し、スクリプトの実行内容を設定します。
「workbook」はExcelのブックを操作するための引数です。
- 関数「main」を定義し、スクリプトの実行内容を設定します。
- let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
- getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
- let lastRow: number = getLastDataRow(sheet);
- 「getLastDataRow()」関数を使用して、表の最終行のインデックスを取得します。
- let lastColumn: number = getLastDataColumn(sheet);
- 「getLastDataColumn()」関数を使用して、表の最終列のインデックスを取得します。
- let range: ExcelScript.Range = sheet.getRangeByIndexes(1, 1, lastRow – 1, lastColumn – 1);
- 取得した最終行・最終列を用いて、クリア対象の範囲「B2」から指定範囲を動的に設定します。
- range.clear(ExcelScript.ClearApplyTo.contents);
- 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
書式やハイパーリンクはそのまま残ります。
- 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
- }
- 関数「main」の終了を示しています。
総括・ポイント
この使用例では、clear()メソッドと最終行・最終列を自動で取得する関数を組み合わせることで、データ範囲を柔軟に指定してクリアする方法を示しています。
表のデータ範囲が動的に変わる場合に非常に便利です。
この記事のまとめ
この記事では、Officeスクリプトの clear() メソッドを用いてExcelシート内のセル内容や書式をクリアする方法について詳しく解説しました。
用途に応じて異なるオプションを使い分けることで、セルの内容を柔軟に管理する方法を学べます。
さらに、最終行・最終列の自動取得やデータバックアップについても解説しているため、実用的なスクリプト作成が可能になります。
ポイントのおさらい
- clear()メソッドでセルの内容をクリアする基本操作
- clear() メソッドを使えば、セル範囲の内容を一括で削除できます。
これにより、指定範囲のデータや書式をまとめてクリアし、セルを初期状態に戻せます。
⇒ 「Officeスクリプトでセルをクリアするclear()メソッドの使い方」をもう一度見る
- clear() メソッドを使えば、セル範囲の内容を一括で削除できます。
- clear()メソッドのオプションで柔軟なクリア操作を実現
- 「ExcelScript.ClearApplyTo.all」、「contents」、「formats」、「hyperlinks」のオプションを使い分けることで、データのみ、書式のみ、リンクのみなど、細かく内容をクリアできます。
このようにオプションを使い分けることで、用途に応じたデータ管理がしやすくなります。
⇒ 「OfficeスクリプトのClear()メソッドで指定できるオプション一覧」を見る
- 「ExcelScript.ClearApplyTo.all」、「contents」、「formats」、「hyperlinks」のオプションを使い分けることで、データのみ、書式のみ、リンクのみなど、細かく内容をクリアできます。
- セル範囲の指定方法|動的な範囲選択で効率的なクリア操作
- セル範囲の指定方法を理解することで、クリア範囲を柔軟に設定可能です。
特定のセルや行・列、シート全体など、目的に応じたセル範囲の指定ができ、クリア操作の精度が上がります。
⇒ 「Officeスクリプトでのセル範囲指定方法|clear()メソッドと組み合わせて使う基本」もう一度見る。
- セル範囲の指定方法を理解することで、クリア範囲を柔軟に設定可能です。
- clear()メソッド使用時の注意ポイント
- clear() メソッドは強力なメソッドですが、データ消失を避けるため、クリア範囲の正確な指定やデータのバックアップが重要です。
また、行や列の幅はクリア後も変更されないため、レイアウトを整える際には delete() メソッドの活用も効果的です。
⇒ 「Officeスクリプト「clear()メソッド」の注意ポイント」もう一度見る。
- clear() メソッドは強力なメソッドですが、データ消失を避けるため、クリア範囲の正確な指定やデータのバックアップが重要です。
- 使用例|データ削除の実用例
- 実務でよく使用される内容を説明しました。
- 使用例1:セル全体をクリアする
- データや書式、リンクを含めたすべての内容をクリアします。
- 使用例2:セル範囲内の値のみをクリア
- 書式やリンクを保持したままデータのみを削除し、再入力用のテンプレート作成に便利です。
- 使用例3:最終行・最終列を自動で取得し、値のみをクリア
- データ範囲が変動する場合でも、自動で範囲を調整してクリアできます。
⇒ 「Officeスクリプト「clear()メソッド」の注意ポイント」もう一度見る。
- データ範囲が変動する場合でも、自動で範囲を調整してクリアできます。
- 使用例1:セル全体をクリアする
- 実務でよく使用される内容を説明しました。
さらに学ぶために
Officeスクリプトでのクリア操作を理解したら、次のステップとして データフィルタリング や 条件付き書式の自動化、集計操作 を学ぶと、さらに高度なExcel操作ができるようになります。