Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разработка макросов в MS Excel / 8 сообщений из 8, страница 1 из 1
16.10.2010, 21:43
    #36903278
Амосенька
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
Помогите пожалуйста написать следующую программу: Взять одномерный массив из L элементов. Определить количество различных элементов и поместить их в начале массива. Вывести результирующий массив под исходным. L=20.
...
Рейтинг: 0 / 0
16.10.2010, 21:59
    #36903291
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
Результат надо получить в дополнительном массиве? в том же массиве (можно ли в таком случае использовать промежуточный)?
Исходные данные брать откуда (с листа Excel, вводить руками, генерировать)?
"Вывести результирующий массив под исходным" - куда вывести (в ячейки, в окно)?
...
Рейтинг: 0 / 0
17.10.2010, 18:17
    #36903973
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
Collection и Dictionary Вы уже проходили?
...
Рейтинг: 0 / 0
18.10.2010, 01:17
    #36904230
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
Да даже если и "проходили", что огород городить?
Задача ведь просто на сортировку. N достаточно мало, так что с Шеллом или Квик-сорт заморачиваться даже не стОит.
Простая реализация выборкой (Массив - первый столбец листа, Результат - второй столбец):
Код: plaintext
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.
Sub Example01()
 Const L =  20 
 Dim i, j, Counter As Byte
 ' Заполняем исходный массив A()
 ReDim A(L)
 For i =  1  To L
  A(i) = Cells(i,  1 ).Value
 Next i
 ' Формируем результат - массив B()
 ReDim B(L)
 Counter =  0 
 For i =  1  To L
  j =  1 
  Do While j <= Counter
   If B(j) = A(i) Then Exit Do
   j = j +  1 
  Loop
  ' Числа из A() нет в B() - добавляем его
  If j > Counter Then
   Counter = Counter +  1 
   B(Counter) = A(i)
  End If
 Next i
 ' Выводим результат на лист
 Columns( 2 ).Rows("1:" & L).ClearContents
 For i =  1  To Counter
  Cells(i,  2 ).Value = B(i)
 Next i
 MsgBox "Количество различных элементов = " & Counter
End Sub
Не забудьте (если данные берете с листа), что любая ячейка - это 0, и тоже будет учтена...
...
Рейтинг: 0 / 0
18.10.2010, 01:20
    #36904232
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
AndreTM... что любая ячейка - это 0, и тоже будет учтена...
Что любая пустая ячейка в исходном массиве - это 0
...
Рейтинг: 0 / 0
20.10.2010, 19:28
    #36910473
Амосенька
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
AndreTM,

Большое спасибо за программку!!! Всё работает)))
...
Рейтинг: 0 / 0
27.11.2010, 11:57
    #36980673
shahrukh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
авторAndreTM

А вот скажите, нафига вы помогаете студенту-лентяю?
...
Рейтинг: 0 / 0
27.11.2010, 12:28
    #36980685
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка макросов в MS Excel
shahrukhавторAndreTM

А вот скажите, нафига вы помогаете студенту-лентяю?
О-о...
Это надо быть в теме.
Амосенька у нас не только лентяй(ка), но и интересуется иногда и другим - http://sql.ru/forum/actualthread.aspx?tid=805470
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разработка макросов в MS Excel / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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