IronXLを使用してセルをコピーする方法

C#でセルをコピーする方法 with IronXL

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL を使用すると、Excel スプレッドシート内のセル、範囲、行、または列を、単一の Copy メソッドでコピーできます。このメソッドは、任意の場所やワークシート間でデータを複製する際、すべての書式設定とスタイルを維持します。

セルのコピー"機能は、セルの内容を複製し、他のセルに貼り付けます。 ワークシート内のデータ、数式、書式、その他の属性を複製します。 Whether creating spreadsheets from scratch or loading existing Excel files, the copy functionality is essential for efficient data manipulation.

クイックスタート: 1行で列または範囲をコピー

単一のセル、行、列、またはブロックなどの範囲全体を、1つのメソッド呼び出しでシートから別のシートにコピーします。 Copy 関数は、スタイルや書式を維持しつつ、Excelの自動化を迅速かつ簡単に行えます。

  1. IronXL をNuGetパッケージマネージャでインストール

    PM > Install-Package IronXL.Excel
  2. このコード スニペットをコピーして実行します。

    workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronXL を使い始めましょう無料トライアル

    arrow pointer


Excelで1つのセルをコピーするには?

選択したセルの内容をコピーするには、Copy メソッドを使用します。 ワークシートオブジェクトを最初のパラメーターとして渡し、開始位置を2番目のパラメーターとして渡します。 The Copy method retains all styling including font and size, background patterns and colors, and borders and alignment.

:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-single-cell.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");

workBook.SaveAs("copySingleCell.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");

workBook.SaveAs("copySingleCell.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");

workBook.SaveAs("copySingleCell.xlsx");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet1"), "B3")

workBook.SaveAs("copySingleCell.xlsx")
$vbLabelText   $csharpLabel

コピー時に保存される書式は何ですか?

Copy メソッドは、以下を含むすべてのセルプロパティを保持します:

  • Cell 値と数式
  • 数値フォーマット(通貨、パーセンテージ、日付)
  • フォントスタイリング(書体、サイズ、太字、斜体、色)
  • セルの枠線と背景色
  • テキストアライメント(水平および垂直)
  • セル保護設定

この包括的な保存により、Microsoft ExcelでC#とCtrl+Vを使用するのと同様に、コピーされたセルが元の外観と機能を維持することが保証されます。

セルA1が選択され、コピーされた値を含むセルB3を指す矢印が示されたスプレッドシート。

なぜコピー メソッドは 2 つのパラメータを取るのですか

Copy メソッドは、正確な制御を行うために 2 つのパラメータを必要とします:

  1. ワークシートパラメータ: 目的地のワークシートを指定します(ワークブック内で同じか異なる)
  2. アドレスパラメータ: 貼り付けるコンテンツの開始セル位置を定義します

このデザインでは、同じシート内または異なるシート間で柔軟にコピーできるため、サマリーレポートの作成や複数のソースからのデータの統合に最適です。

シングルセルコピーと範囲コピーのどちらを使うべきか

次のような場合は、シングルセルコピーを選択してください:

  • 個々の値または数式を複製する
  • ヘッダーセルまたはラベルをコピーする
  • 特定の計算された結果を複製する
  • サマリ値を操作する

以下のような場合にレンジコピーを使用してください:

  • 完全なデータテーブルを移動する
  • 関連する複数のセルを複製する
  • 完全な行または列をコピーする
  • データ関係の保持

複数のセルまたは範囲をコピーするにはどうすればよいですか?

Like the Clear method, Copy is available in the Range class, allowing execution on any range size. When selecting ranges, IronXL provides flexible copying options:

  • 単一のセルをコピーする (C10):

    workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
    workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
    workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")
    $vbLabelText   $csharpLabel
  • 列をコピー (A):

    workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
    workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
    workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")
    $vbLabelText   $csharpLabel
  • 行をコピー (4):

    workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
    workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
    workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")
    $vbLabelText   $csharpLabel
  • 2次元範囲をコピーする (D6:F8):

    workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
    workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
    workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")
    $vbLabelText   $csharpLabel

ご注意2番目のパラメーターはデータ入力の開始位置を示すアドレスを受け入れます。 コピーされたデータはそのアドレスから右と下に広がります。

:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-cell-range.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");

// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");

// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");

// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");

workBook.SaveAs("copyCellRange.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");

// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");

// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");

// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");

workBook.SaveAs("copyCellRange.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");

// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");

// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");

// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");

workBook.SaveAs("copyCellRange.xlsx");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Copy a single cell(C10)
workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")

' Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")

' Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")

' Copy a two-dimensional range(D6:F8)
workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")

workBook.SaveAs("copyCellRange.xlsx")
$vbLabelText   $csharpLabel

宛先範囲が小さすぎるとどうなりますか

IronXLは自動的にサイズの違いを処理します:

  • 目的地のパラメータは、左上の開始セルのみを指定します
  • ソース範囲全体が目的地のサイズに関係なくコピーされます
  • 目的地エリアの既存のデータは上書きされます
  • コピー操作は、すべてのソースデータを収容するために拡張されます

例えば、3x3の範囲をセル B1 にコピーすると、セル B1:D3 にデータが入力され、既存のコンテンツは上書きされます。

行と列の参照はどのように機能しますか?

IronXLは、GetColumn()メソッドを使用して、行と列に対して0ベースのインデックス付けを採用しています:

  • GetColumn(0) は列 A を指します
  • GetColumn(1) は B 列を指します
  • GetRow(0) は 1 行目を指します
  • GetRow(3) は 4 行目を指します

このインデックス付けは、標準的な C# 配列の規約に沿ったものです。

なぜ GetColumn() および GetRow() メソッドを使用するのか?

GetColumn() および GetRow() メソッドは、以下の機能を提供します:

  • パフォーマンス:全行または全列に対してより効率的
  • 明快さ:コードの意図を明確にします
  • 柔軟性: すべての範囲操作をサポートする Range オブジェクトを返します
  • 便利さ:完全な選択のために終了セルを計算する必要がありません

これらの方法は、列の完全なコピーを必要とするレポートを作成する場合や、行のテンプレートを複製する場合に優れています。

Excelのコピー操作で、コピー元の範囲A1:F10からコピー先のセルに矢印が表示され、コピーされたデータが強調表示されています。

異なるワークシート間でセルをコピーするには?

最初のパラメータはワークシートオブジェクトを受け入れ、異なるワークシート間でのコピー&ペーストを可能にします。 最初のパラメータとして、別のワークシートオブジェクトを渡してください。 This functionality proves essential when managing multiple worksheets or creating summary sheets from detailed data.

ご注意以下の例では、Copyメソッドの最初のパラメータは"Sheet2"ワークシートです: workBook.GetWorksheet("Sheet2")

:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-to-other-worksheet.cs
using IronXL;

WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");

// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");

// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");

// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");

workBook.SaveAs("crossSheetCopy.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet2"), "B3");

workBook.SaveAs("copyAcrossWorksheet.xlsx");
using IronXL;

WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");

// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");

// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");

// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");

workBook.SaveAs("crossSheetCopy.xlsx");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet2"), "B3")

workBook.SaveAs("copyAcrossWorksheet.xlsx")

Dim workBook2 As WorkBook = WorkBook.Load("multisheet.xlsx")
Dim sheet1 As WorkSheet = workBook2.GetWorkSheet("Sheet1")
Dim sheet2 As WorkSheet = workBook2.GetWorkSheet("Sheet2")

' Copy entire data range from Sheet1 to Sheet2
sheet1("A1:D10").Copy(sheet2, "A1")

' Copy with formulas intact
sheet1("E1:E10").Copy(sheet2, "F1")

' Copy formatting from template sheet
Dim templateSheet As WorkSheet = workBook2.GetWorkSheet("Template")
templateSheet("A1:Z1").Copy(sheet2, "A15")

workBook2.SaveAs("crossSheetCopy.xlsx")
$vbLabelText   $csharpLabel

一般的なクロスワークシートコピーシナリオとは

このようなシナリオでは、ワークシート間のコピーが頻繁に使用されます:

  1. サマリシートの作成: 詳細シートからキー指標をダッシュボードにコピーします
  2. テンプレートの複製: フォーマットされたテンプレートを新しいワークシートにコピーします
  3. データ統合: 部門シートからデータを集め、マスターシートにまとめます
  4. レポート生成: フィルタリングされた結果を別のレポート作成ワークシートにコピーします
  5. バックアップ操作: 重要なデータをバックアップシートに複製します

When working with formulas that reference other cells, IronXL automatically adjusts relative references based on the new location while maintaining absolute references.

新しいワークシートと既存のワークシートでは、いつコピーすべきですか?

以下の場合、新しいワークシートにコピーしてください:

  • 定期的なレポートの作成(日次、週次、月次)
  • 生データから処理済みデータを分離する
  • ソースデータから分析ワークシートを作成する
  • ユーザー固有のデータビューを生成する

以下の場合、既存のワークシートにコピーしてください:

  • 進行中のログにデータを追加する
  • ダッシュボードセクションを更新する
  • 複数のデータソースを統合する
  • 履歴記録を維持する

For complex scenarios involving multiple sheets, consider using IronXL's ability to work with DataSets and DataTables for sophisticated data manipulation.

ワークシートの名前の競合をどのように処理しますか?

ワークシート間でコピーする際に、適切なワークシート管理を行うこと:

// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
    workBook.CreateWorkSheet("TargetSheet");
}

// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
    workBook.CreateWorkSheet("TargetSheet");
}

// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
' Check if worksheet exists before copying
If workBook.GetWorkSheet("TargetSheet") Is Nothing Then
    workBook.CreateWorkSheet("TargetSheet")
End If

' Safe copy operation
Dim targetSheet As WorkSheet = workBook.GetWorkSheet("TargetSheet")
sourceSheet("A1:Z100").Copy(targetSheet, "A1")
$vbLabelText   $csharpLabel

このアプローチは、ランタイムエラーを防ぎ、本番環境でExcelプロセスを自動化する場合に特に重要なコピー操作を確実に成功させます。

よくある質問

C# を使用して Excel で 1 つのセルをコピーするにはどうすればよいですか?

IronXLではCopyメソッドを使って一つのセルをコピーすることができます。コピーしたいセル(例えばworkSheet["A1"])を選択し、コピー先のワークシートとコピー先のセルアドレスをパラメータとしてCopyメソッドを呼び出すだけです。IronXLはコピー操作の間、フォント、色、枠線、数式を含むすべての書式を保持します。

セルをコピーする際、どのような書式が保持されますか?

IronXLのコピーメソッドは、セルの値や数式、数値フォーマット(通貨、パーセンテージ、日付)、フォントスタイル(書体、サイズ、太字、斜体、色)、セルの境界線と背景色、テキストの配置(水平方向と垂直方向)、セルの保護設定を含むすべてのセルプロパティを保持します。これにより、コピーされたセルは元の外観と機能を維持します。

列や範囲全体を一度にコピーできますか?

はい、IronXLでは一回の操作で列、行、範囲全体をコピーすることができます。GetColumn(0).Copy()のようなメソッドを使って列全体をコピーしたり、セル範囲を選択して複数のセルを一度にコピーすることができます。Copy メソッドは、単一のセルからワークシート全体まで、どのような選択サイズでも動作します。

異なるワークシート間でセルをコピーする方法を教えてください。

IronXLではワークシート間のセルのコピーが簡単にできます。Copyメソッドを使用する場合、最初のパラメータとしてコピー先のワークシートを指定し(例えば、workBook.GetWorkSheet("Sheet2"))、2番目のパラメータとしてコピー先のセル・アドレスを指定します。これにより、同じワークブック内の異なるシート間でデータをコピーできます。

Excelでセルをコピーするために最低限必要な手順は何ですか?

IronXLを使えば、セルのコピーはわずか5ステップで完了します:1) IronXL C#ライブラリをダウンロードする、2) 既存のExcelスプレッドシートを読み込む、3) コピーしたい範囲、行、列を選択する、4) 選択した範囲でCopyメソッドを呼び出す、5) コピー先のワークシートと位置をCopyメソッドに渡す。すべての操作は、1行のコードで行うことができます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 2,052,917 | バージョン: 2026.6 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronXL.Excel
サンプルを実行する あなたのデータがスプレッドシートになるのを見る。