Senthilkumar Balu Ответов: 3

Excel дублирует имя файла с разными версиями


У меня есть Excel, где у меня есть имена файлов в одном столбце с номерами версий в другом столбце. Мне нужно удалить дубликаты (файл с более высокой версией должен быть сохранен, а более низкая версия удалена).Не могли бы вы, ребята, помочь мне с excel VBA для этого?

Что я уже пробовал:

То, что я пробовал( я новичок в VBA, попробовал следующее С помощью google)

with Sheets("Sheet1")
LRow1 = .Cells(Rows.Count, 1).End(xlUp).row
LRow3 = "A1:" & getColumnAlpha & LRow1

For d = 2 To LRow1
	Cells(d, 4) = Cells(d, 1) & "_" & Cells(d, 3)
Next d
Range("A2:F" & LRow1).Sort Key1:=Range("D2:D" & LRow1), order1:=xlAscending, Header:=xlNo
'Sheets("Sheet1").Columns(4).Copy Destination:=Sheets("Test").Columns(2)
Dim test As String
test = LRow1
finishedRow = LRow1
'finishedRow() = test.ToStringArray
'ReDim finishedRow(LRow1) As String
row = 1
resultRow = 1
index = 1

Do While .Range("D" & row) <> ""

	If UBound(Filter(finishedRow, row)) < 0 Then
		finishedRow = row
		index = index + 1
		innerRow = 1

		Do While .Range("D" & innerRow) <> ""


			If UBound(Filter(finishedRow, innerRow)) < 0 Then

				If .Range("D" & row) = .Range("D" & innerRow) Then

					If .Range("B" & row) < .Range("B" & innerRow) Then
						'Update time in result record
						'Sheets("Sheet1").Range("B" & resultRow) = "Delete"
						Rows(resultRow).EntireRow.Delete


					End If

					'Add row to record array
					finishedRow = innerRow
					index = index + 1

				End If

			End If

			'Increase inner row
			innerRow = innerRow + 1

		Loop

		'Increase result row
		resultRow = resultRow + 1

	End If

	'Increase row
	row = row + 1
Loop

End With

Этот код удаляет дубликаты, но требует, чтобы макрос выполнялся несколько раз

3 Ответов

Рейтинг:
2

Patrice T

Вы должны сказать нам, что находится в Столбцах, потому что мы можем только догадываться, что делает ваш код.

Ваша проблема, вероятно, связана с тем, что при удалении строки данные ниже этой строки перемещаются вверх, и если вы не будете осторожны, это заставит вас пропустить некоторые данные.


Рейтинг:
0

Richard MacCutchan

К сожалению, это не служба написания кода. Видеть Начало работы с VBA в Excel 2010[^].


Рейтинг:
0

Graeme_Grant

Просто отсортируйте свои данные, чтобы сгруппировать их, затем пройдите через каждую строку и удалите ненужные строки...