Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Синхронизация списков данных / 13 сообщений из 13, страница 1 из 1
02.03.2018, 13:26
    #39609623
VladimirSk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
С наступающими выборами, Господа!
Однако подскажите :
Имеем два списка
Список 1Список2aaaabbccddeeeeff

Нужно получить следующий результат:
Список 1Список2aaaabbccddeeeeff

Размерность всегда разная, массив всегда двухмерный
...
Рейтинг: 0 / 0
02.03.2018, 13:28
    #39609624
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
И где весь этот хлам? В Экселе, на листе, что ли?
...
Рейтинг: 0 / 0
02.03.2018, 14:19
    #39609659
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Налицо задача для FULL JOIN
...
Рейтинг: 0 / 0
02.03.2018, 14:29
    #39609671
VladimirSk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Akina,

В EXCELe, в нём.
Пока думаю в качестве синхронизатора применить
общий список с удалением дублей.
А относительно него выстроить два списка.
...
Рейтинг: 0 / 0
02.03.2018, 14:51
    #39609684
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Нормальный подход. На третьем листе получить общий список (удаление дубликатов в помощь), а потом подтянуть с исходных листов существующие записи с помощью ВПР().
...
Рейтинг: 0 / 0
02.03.2018, 15:05
    #39609690
VladimirSk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Akina,
Думаю макрос настроить т.к. размер данных всегда разный.
Формулы растягивать не удобно.
...
Рейтинг: 0 / 0
02.03.2018, 15:11
    #39609694
VladimirSk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Akina,
Можно ли за один проход оба списка раскидать вдоль общего,
или два цикла придётся применить ?
...
Рейтинг: 0 / 0
02.03.2018, 15:13
    #39609696
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Зачем циклы? они вообще не нужны...
...
Рейтинг: 0 / 0
02.03.2018, 15:27
    #39609706
VladimirSk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Akina,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
y = 1
k = 0
r = 0
m1 = Worksheets("Лист1").Range("A1:B" & fin1)	'Список 1
m3 = Worksheets("Лист2").Range("A1:B" & fin2)	'Список совпадений
m4 = Worksheets("Лист2").Range("AA1:AB" & fin2)	'Список не совпадений
m5 = Worksheets("Лист3").Range("A1:B" & fin3)	'Список общий
For i = 1 To fin1
For j = 1 To kon1

If m5(i, 1) = m1(j, 1) Then
m3(i, 1) = m5(i, 1)
m3(i, 2) = m5(i, 2)
k = k + 1
y = True
GoTo loop1
Else
y = False
End If

Next j
If j = kon1 + 1 And y = False Then
t = i
m4(t, 1) = m5(i, 1)
m4(t, 2) = "Not Found"
r = r + 1
End If

 y = y + 1
loop1:

Next i



Вот получилось нечто...
...
Рейтинг: 0 / 0
02.03.2018, 15:30
    #39609707
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Код: vbnet
1.
2.
ThisWorkbook.Sheets(1).Range("a1:" & ThisWorkbook.Sheets(1).Range("a:a").SpecialCells(xlCellTypeLastCell).Address).Copy Destination:=ThisWorkbook.Sheets(3).Range("a1")
ThisWorkbook.Sheets(2).Range("a1:" & ThisWorkbook.Sheets(2).Range("a:a").SpecialCells(xlCellTypeLastCell).Address).Copy Destination:=ThisWorkbook.Sheets(3).Range("a:a").SpecialCells(xlCellTypeLastCell).Offset(1, 0)
...
Рейтинг: 0 / 0
02.03.2018, 16:17
    #39609723
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Я чет не понял, как с помощью удаления дубликатов можно получить следующий результат .
Вот такой алгоритм приводит к указанному результату: если ячейки слева и справа не совпадают, вставить пустую ячейку, со сдвигом вниз на место правой или левой (попеременно), далее переходить к следующей строке.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Vl()
Dim i&, p&
  i = 2: p = 1
  Do While Not IsEmpty(Cells(i, 1)) And Not IsEmpty(Cells(i, 2))
    If Cells(i, 1) <> Cells(i, 2) Then
      Cells(i, p + 1).Insert xlDown
      p = (p + 1) Mod 2
    End If
    i = i + 1
  Loop
End Sub
...
Рейтинг: 0 / 0
02.03.2018, 17:55
    #39609779
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
КазанскийЯ чет не понял, как с помощью удаления дубликатов можно получить следующий результат .Читай всё. Там есть и второй этап. А потом ещё будет и третий - замена формул значениями.
...
Рейтинг: 0 / 0
02.03.2018, 17:56
    #39609780
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация списков данных
Казанскийесли ячейки слева и справа не совпадают, вставить пустую ячейку, со сдвигом вниз на место правой или левой (попеременно), далее переходить к следующей строке.Хорошо, если список сортированный... или, вернее, устойчивый - в том смысле, какой в это слово вкладывает сортировка.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Синхронизация списков данных / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]