異なるソースからのデータセットを結合したり、他のワークシートからデータをコピーしたりする際に、データが一致しない場合、重複した行が発生する可能性があります。これらの重複した行は、データの分析や計算に影響を与え、誤った結果を生み出す可能性があります。このような場合、データの正確性を確保するために、重複した行を削除することができます。この記事では、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 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。