VBA Уникальные значения из двух или более столбцов

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

В моей ситуации я копирую базу данных (все файлы: frm, myd) в папку данных в папке данных MySQL (используя Wamp at home). Все было в порядке, пока я не хочу создать таблицу и имею ошибку #1146 Table '...' doesn't exist!.

Я использую Wamp 2.1 с MySQL версии 5.5.16.

Мое решение:

  1. Экспортировать базу данных в файл;
  2. проверить, действительно ли экспортированный файл в порядке !!;
  3. удалить базу данных, где у меня есть проблемы;
  4. создать новую базу данных с тем же именем, что и последний,
  5. импортировать файл в базу данных.

ДЛЯ МЕНЯ РЕШЕНА ПРОБЛЕМА. Теперь я могу создавать таблицы снова без ошибок.

0
задан Chris 13 July 2018 в 18:37
поделиться

3 ответа

Используйте Range.RemoveDupicates:

Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets(1) 'realize the this is the index number and can error if the user moves the tabs around.
Set ws2 = ThisWorkbook.Worksheets(2)
Dim LastRowInput As Long
    LastRowInput = ws2.Cells(ws2.Rows.Count, 4).End(xlUp).Row

ws1.Range("A10:A" & LastRowInput + 8).Value = ws2.Range("D2:D" & LastRowInput).Value
ws1.Range("B10:B" & LastRowInput + 8).Value = ws2.Range("AB2:AB" & LastRowInput).Value
ws1.Range("A10:B" & LastRowInput + 8).RemoveDuplicates Array(1, 2), xlNo
2
ответ дан Scott Craner 17 August 2018 в 12:15
поделиться
  • 1
    Да, это решение никогда не приходило мне в голову. Спасибо! – Chris 13 July 2018 в 18:57
  • 2
    Рабочий лист (1), на который вставляются данные, будет содержать данные ниже, поэтому этот метод перезапишет его перед удалением обманов. Я предполагаю, что мне нужно было бы заблокировать эти шаги в массиве или переменной, прежде чем вставлять их в нужное место? – Chris 13 July 2018 в 19:53
  • 3
    Пойдите с ответом @ jeeped, он сделает удаление в памяти. Но если есть данные ниже, как вы знаете, что даже уникальный не будет перезаписываться? – Scott Craner 13 July 2018 в 20:03
  • 4
    Ах, отлично. Уникальные значения для каждого экземпляра обычно не превышают более четырех строк. Поэтому я искал более быстрый способ предварительно заполнить существующий шаблон. Спасибо вам за совет. – Chris 13 July 2018 в 20:13

Я знаю, что Скотт уже опубликовал решение, но все, что вам нужно сделать, это следующее:

Range("D1:AB6").Range("$D$1:$AB$6").RemoveDuplicates Columns:=Array(1, 25), Header:=xlNo

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

0
ответ дан dwirony 17 August 2018 в 12:15
поделиться
  • 1
    За исключением того, что OP хочет уникальные значения в другом диапазоне листов, а не удалять исходные данные. – Scott Craner 13 July 2018 в 19:27
  • 2
    @ScottCraner Ahh Я этого не заметил. – dwirony 13 July 2018 в 19:28

AdvancedFilter может быстро вывести список из двух столбцов.

Option Explicit

Sub Macro1()

    With Worksheets("sheet3")
        .Range("D1:AB6").AdvancedFilter Action:=xlFilterCopy, _
                             CopyToRange:=.Range("AD1:AE1"), Unique:=True
    End With

End Sub

3
ответ дан Jeeped 17 August 2018 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: