Удалить дубликат заголовка - PullRequest
1 голос
/ 25 марта 2019

я новичок в vba, я хочу удалить дубликат заголовка столбца.

пример: A1: год A2: 2002 A3: 2005 A4: 2012 A5: год A6: 2005 A7: год B1: отдел B2: Продажи B3: Маркетинг B4: HR B5: Отдел B6: Маркетинг B7: Отдел C1: Стоимость C2: 111 C3: 23784 C4: 1234 C5: Стоимость C6: 5737 C7: Стоимость

В этом примере я хочучтобы сохранить все, кроме дубликатов заголовков (здесь строки 5 и 7), их следует удалить, чтобы в итоге это выглядело следующим образом:

A1: год A2: 2002 A3: 2005 A4: 2012 A5: 2005 B1: Отдел B2: Продажи B3: Маркетинг B4: HR B5: Маркетинг C1: Стоимость C2: 111 C3: 23784 C4: 1234 C5: 5737

Я не знаю, в какой строке будут дубликаты заголовков, также я не знаюзнать, когда заканчивается строка.Я пытался работать с find и lastrow


Option Explicit

 Sub rh()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim Dup As Integer
    Dim Lastrow As Integer

On Error Resume Next

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("TESTSHEET")

Dup = ws.Range("A2:C" & Lastrow).Find("Year", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False).Columns

ws.Select
Columns(Dup).Select
Selection.Delete

End Sub

Это не сработало для меня, оно не удаляло строки, в которых были найдены повторяющиеся заголовки

1 Ответ

1 голос
/ 25 марта 2019

Путь Excel

Для этого не нужно писать код VBA, просто используйте функцию Excel Удаление дубликатов . Вот как это сделать:

  1. Выберите диапазон ячеек с дублирующимися значениями, которые вы хотите удалить.
  2. Нажмите Данные> Удалить дубликаты , а затем в разделе Столбцы установите или снимите флажки в столбцах, где вы хотите удалить дубликаты.

    enter image description here
  3. Например, в этой таблице в столбце Имя есть дубликаты, которые я хочу удалить.

enter image description here

А после удаления дубликатов из столбца имен вот так это выглядит:

enter image description here


Путь VBA

Если для этого вам нужно использовать VBA, то вы можете использовать функцию RemoveDuplicates:

с заголовками

Sub sbRemoveDuplicatesSpecificWithHeaders()
   Range("A1:D10").RemoveDuplicates Columns:=Array(1), Header:= xlYes 
End Sub

без заголовков

Sub sbRemoveDuplicatesSpecificWithNoHeaders()
   Range("A1:D10").RemoveDuplicates Columns:=Array(1), Header:= xlNo
End Sub

Удаление дублирующихся заголовков

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

Sub removeDuplicates()
    Dim lrow As Long
    Dim index As Long
    Dim header As String

    header = Range("A1").Value
    lrow = Range("A" & Rows.count).End(xlUp).Row

    For index = 2 To lrow
        If Range("A" & index).Value = header Then Rows(index).Delete
    Next
End Sub

Надеюсь, это поможет.

...