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

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

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

В EXCELe, в нём.
Пока думаю в качестве синхронизатора применить
общий список с удалением дублей.
А относительно него выстроить два списка.
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #39609684
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный подход. На третьем листе получить общий список (удаление дубликатов в помощь), а потом подтянуть с исходных листов существующие записи с помощью ВПР().
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #39609690
VladimirSk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Думаю макрос настроить т.к. размер данных всегда разный.
Формулы растягивать не удобно.
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #39609694
VladimirSk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Можно ли за один проход оба списка раскидать вдоль общего,
или два цикла придётся применить ?
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #39609696
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем циклы? они вообще не нужны...
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #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
Синхронизация списков данных
    #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
Синхронизация списков данных
    #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
Синхронизация списков данных
    #39609779
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КазанскийЯ чет не понял, как с помощью удаления дубликатов можно получить следующий результат .Читай всё. Там есть и второй этап. А потом ещё будет и третий - замена формул значениями.
...
Рейтинг: 0 / 0
Синхронизация списков данных
    #39609780
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанскийесли ячейки слева и справа не совпадают, вставить пустую ячейку, со сдвигом вниз на место правой или левой (попеременно), далее переходить к следующей строке.Хорошо, если список сортированный... или, вернее, устойчивый - в том смысле, какой в это слово вкладывает сортировка.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Синхронизация списков данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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