私は大きなスプレッドシートを持っていますが、編集を依頼されました。基本的にデータが取り出された場所では、個人名、国名、開始日、終了日がいくつか重複して作成されていました。隣接するセルで開始日と終了日を取得して重複データを削除することは可能でしょうか?Excel、VBA、重複値
私はスクリーンショットを提供しました。このスプレッドシートは2300行を超えており、約50%が重複して編集されているため、手動でのコピー、貼り付け、および削除には非常に時間がかかります。
おかげ
私は大きなスプレッドシートを持っていますが、編集を依頼されました。基本的にデータが取り出された場所では、個人名、国名、開始日、終了日がいくつか重複して作成されていました。隣接するセルで開始日と終了日を取得して重複データを削除することは可能でしょうか?Excel、VBA、重複値
私はスクリーンショットを提供しました。このスプレッドシートは2300行を超えており、約50%が重複して編集されているため、手動でのコピー、貼り付け、および削除には非常に時間がかかります。
おかげ
SQLを使用することに適しています。
Sub myQuery()
Dim strSQL As String
Dim strTable As String
Dim Ws As Worksheet
strTable = "[" & ActiveSheet.Name & "$]"
strSQL = "SELECT NAME, COUNTRY, MIN([Start Date]) as [Start Date] , max([End Date]) as [End Date] "
strSQL = strSQL & " FROM " & strTable & " "
strSQL = strSQL & " Where not isnull(NAME) "
strSQL = strSQL & " Group by NAME, COUNTRY "
Set Ws = Sheets.Add
exeSQL strSQL, Ws
End Sub
Sub exeSQL(strSQL As String, Ws As Worksheet)
Dim Rs As Object
Dim strConn As String
Dim i As Integer
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=Excel 12.0;"
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open strSQL, strConn
If Not Rs.EOF Then
With Ws
.Range("a1").CurrentRegion.ClearContents
For i = 0 To Rs.Fields.Count - 1
.Cells(1, i + 1).Value = Rs.Fields(i).Name
Next
.Range("a" & 2).CopyFromRecordset Rs
.Columns.AutoFit
End With
End If
Rs.Close
Set Rs = Nothing
End Sub
残念ながら、SQL Server Management Studioにアクセスすることはできません。 SQLなしでこれを実行する別の方法はありますか? – Merj8