Visual Basic for Applications. Практика. Нагина Е.К - 23 стр.

UptoLike

Составители: 

23
Начать просмотр фамилий списков с начала каждого списка и сравни-
вать имена клиентов следующим образом:
Если фамилии клиентов в обоих списках совпадают, переместить эту
фамилию в столбец D и сместиться на строку вниз в столбцах А и В для
сравнения следующей пары фамилий.
Если фамилия в столбце А
расположена раньше фамилии в столбце В
(в соответствии с алфавитным порядком), то следует переместить пер-
вое имя из столбца А в столбец D и перейти в следующую строку в
столбце А ( но не в столбце В) для сравнения следующей пары имен.
Следует выполнить те же действия, если фамилия в столбце В
располо-
жена перед фамилией в столбце А ( в соответствии с алфавитным по-
рядком).
Продолжать анализ, сравнивая фамилии в столбцах А и В, пока не бу-
дут скопированы все фамилии из столбца А или из столбца В. После
этого оставшиеся во втором столбце или первом фамилии необходимо
переместить в столбец D.
Пояснения
к составлению программного кода процедуры.
В начале выполнения программного кода процедуры предыдущий ре-
зультат объединения списков удаляется из столбца D; для этого исполь-
зуется метод ClearContents. Затем вычисляется размер существующих
списков, и массивы List1 и List2 заполняются содержимым исходных
списков. Для заполнения массива List3 используется процедура слия-
ния, а результаты заносятся в
столбец D.
Процедура использует переменные Index1 и Index2 для указания пози-
ции в соответствующем списке. Фамилии клиентов сохраняются в пе-
ременных Name1 и Name2. Сравнение фамилий позволяет выяснить,
какую из них заносить в результирующий список, а также какой счет-
чик (Index1 или Index2)увеличивать на 1. Цикл Do While в нашем слу-
чае более удобен, поскольку он продолжает
обработку списков до тех
пор, пока хоть в одном из списков присутствуют фамилии.
После завершения цикла Do оставшиеся фамилии (если такие есть) из
одного списка заносятся в результирующий список. Затем содержимое
массива List3 заносится в столбец D.
Sub MergeLists()
Переменная LSx указывает размер списков
‘ (x изменяется от 1 до 3)
Массивы Listx содержат
элементы списков
‘ (x изменяется от 1 до 3)
Списки индексируются от 1 до 3 следующим
образом:
‘ List1– клиенты за 2007 год (существующие данные)
‘ List2– клиенты за 2008 год (существующие данные)
ƒ Начать просмотр фамилий списков с начала каждого списка и сравни-
  вать имена клиентов следующим образом:
ƒ Если фамилии клиентов в обоих списках совпадают, переместить эту
  фамилию в столбец D и сместиться на строку вниз в столбцах А и В для
  сравнения следующей пары фамилий.
ƒ Если фамилия в столбце А расположена раньше фамилии в столбце В
  (в соответствии с алфавитным порядком), то следует переместить пер-
  вое имя из столбца А в столбец D и перейти в следующую строку в
  столбце А ( но не в столбце В) для сравнения следующей пары имен.
  Следует выполнить те же действия, если фамилия в столбце В располо-
  жена перед фамилией в столбце А ( в соответствии с алфавитным по-
  рядком).
ƒ Продолжать анализ, сравнивая фамилии в столбцах А и В, пока не бу-
  дут скопированы все фамилии из столбца А или из столбца В. После
  этого оставшиеся во втором столбце или первом фамилии необходимо
  переместить в столбец D.
Пояснения к составлению программного кода процедуры.
ƒ В начале выполнения программного кода процедуры предыдущий ре-
  зультат объединения списков удаляется из столбца D; для этого исполь-
  зуется метод ClearContents. Затем вычисляется размер существующих
  списков, и массивы List1 и List2 заполняются содержимым исходных
  списков. Для заполнения массива List3 используется процедура слия-
  ния, а результаты заносятся в столбец D.
ƒ Процедура использует переменные Index1 и Index2 для указания пози-
  ции в соответствующем списке. Фамилии клиентов сохраняются в пе-
  ременных Name1 и Name2. Сравнение фамилий позволяет выяснить,
  какую из них заносить в результирующий список, а также какой счет-
  чик (Index1 или Index2)увеличивать на 1. Цикл Do While в нашем слу-
  чае более удобен, поскольку он продолжает обработку списков до тех
  пор, пока хоть в одном из списков присутствуют фамилии.
ƒ После завершения цикла Do оставшиеся фамилии (если такие есть) из
  одного списка заносятся в результирующий список. Затем содержимое
  массива List3 заносится в столбец D.

Sub MergeLists()
‘ Переменная LSx указывает размер списков
‘ (x изменяется от 1 до 3)
‘ Массивы Listx содержат элементы списков
‘ (x изменяется от 1 до 3)
‘ Списки индексируются от 1 до 3 следующим
‘ образом:
‘ List1– клиенты за 2007 год (существующие данные)
‘ List2– клиенты за 2008 год (существующие данные)
                                  23