チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»ワークシート»C#/VB.NET:Excel で重複する行を削除する方法
2023-08-11

C#/VB.NET:Excel で重複する行を削除する方法

異なるソースからのデータセットを結合したり、他のワークシートからデータをコピーしたりする際に、データが一致しない場合、重複した行が発生する可能性があります。これらの重複した行は、データの分析や計算に影響を与え、誤った結果を生み出す可能性があります。このような場合、データの正確性を確保するために、重複した行を削除することができます。この記事では、Spire.XLS for .NET を使用して Excel の重複した行を削除する方法について説明します。

Spire.XLS for .NET をインストールします

まず、Spire.XLS for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.XLS

Excel で重複する行を削除する

重複した行を手動で削除することは、非常に反復的で時間のかかる作業です。Spire.XLS for .NET を使用すると、すべての重複した行を一度に識別して削除できます。詳細な手順は次のとおりです。

  • Workbook インスタンスを作成します。
  • Workbook.LoadFromFile() メソッドを使用して Excel ドキュメントを読み込みます。
  • Workbook.Worksheets[sheetIndex] プロパティを使用して、指定されたワークシートをインデックスで取得します。
  • Worksheet.Range プロパティを使用して、操作したいセルの範囲を指定します。
  • 指定したセル範囲内に重複する内容を含む行を取得します。
  • すべての重複した行をループし、Worksheet.DeleteRow() メソッドを使用してそれらを削除します。
  • Workbook.SaveToFile() メソッドを使用して結果文書を保存します。
  • C#
  • VB.NET
using Spire.Xls;
using System.Linq;

namespace RemoveDuplicateRows
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookインスタンスを作成する
            Workbook workbook = new Workbook();

            //Excelドキュメントを読み込む
            workbook.LoadFromFile("sample.xlsx");

            //最初のシートを取得する
            Worksheet sheet = workbook.Worksheets[0];

            //操作したいセルの範囲を指定する
            var range = sheet.Range["A1:A" + sheet.LastRow];

            //重複した行の番号を取得する
            var duplicatedRows = range.Rows
                   .GroupBy(x => x.Columns[0].DisplayedText)
                   .Where(x => x.Count() > 1)
                   .SelectMany(x => x.Skip(1))
                   .Select(x => x.Columns[0].Row)
                   .ToList();

            //重複した行を削除する        
            for (int i = 0; i < duplicatedRows.Count; i++)
            {
                sheet.DeleteRow(duplicatedRows[i] - i);
            }

            //結果文書を保存する
            workbook.SaveToFile("RemoveDuplicateRows.xlsx");
        }
    }
}
Imports Spire.XLS
Imports System.Linq

Namespace RemoveDuplicateRows
    Class Program
        Private Shared Sub Main(ByVal args() As String)
            'Workbookインスタンスを作成する
            Dim workbook As Workbook = New Workbook

            'Excelドキュメントを読み込む
            workbook.LoadFromFile("sample.xlsx")

            '最初のシートを取得する
            Dim sheet As Worksheet = workbook.Worksheets(0)

            '操作したいセルの範囲を指定する
            Dim range = sheet.Range(("A1:A" + sheet.LastRow))

            '重複した行の番号を取得する
            Dim duplicatedRows = range.Rows.GroupBy(Function(x) x.Columns(0).DisplayedText).Where(Function(x) x.Count() > 1).SelectMany(Function(x) x.Skip(1)).[Select](Function(x) x.Columns(0).Row).ToList()

            '重複した行を削除する                
            Dim i As Integer = 0
            Do While (i < duplicatedRows.Count)
                sheet.DeleteRow((duplicatedRows(i) - i))
                i = (i + 1)
            Loop

            '結果文書を保存する
            workbook.SaveToFile("RemoveDuplicateRows.xlsx")
        End Sub
    End Class
End Namespace

C#/VB.NET:Excel で重複する行を削除する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 453 times