составить выборку из повторяющихся значений и создать отчет

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

SunKiSSka
Сообщения: 68
Зарегистрирован: 11 июл 2007, 12:58
Откуда: Санкт-Петербург

VictorM писал(а):

Код: Выделить всё

Sub TestDoLoop()
Range("A2").Activate
имя = ActiveCell.Value
Do Until имя = ""
iCount = iCount + 1
ActiveCell.Offset(1, 0).Activate
имя = ActiveCell.Value
Loop
MsgBox "Число повторений : " & iCount
End Sub
здесь как я понимаю идет подсчет повторений, а как с использованием цикла Do...Loop прийти к решению. ничего не понимаю, как можно пройти по всему списку, выбрать из него уникальные значения, добавить список уникальных значений на новый лист, и в соответствии с языком поставить отметку (Дату) о действии? :( :( :(
Совсем запуталась...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Да, подсчет повторений. Я говорил, что это только пример использования Do..Loop. Он, кстати, опубликован на сайте по ссылке. Только немного переделан.
В реальном случае, вместо подсчета повторений, включаем нашу процедуру "опроса" строки. Т.е. процедура опроса в цикле Do..Loop "пройдется" по всему нашему списку.
Должен заметить, что процедура ведь выписана не вся. Это опять же пример и в нем опрос тлько одной строки. Затем переходим в Лист2 и заполняем таблицу полученными данными. После этого - Offset(1,0), т.е. переход на строку ниже и т.д. Просто у меня сейчас нет времени дописать Вам полностью. Выбираю время между работой. Чуть позже. Если что - пишите в личку.
p.s. при ответе не обязательно цитировать весь пост :)
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
SunKiSSka
Сообщения: 68
Зарегистрирован: 11 июл 2007, 12:58
Откуда: Санкт-Петербург

спасибо, спасибо, спасибо за советы )))
очень вам признательна ))

просто уже под конец недели голова вообще ничего не соображает, а начальник все напрягает. Буду сама тоже разбираться, может чего-нибудь напридумываю )))
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

SunKiSSka, вопрос еще не снят?
Посмотрите один из возможных рабочих вариантов. Сразу скажу, что код сознательно не оптимизировался. Каждая процедура прописана отдельно для лучшего понимания процесса. Можете выполнить Sub CreatTable по F8 и, я думаю, найдете возможность улучшить код и модифицировать под свои задачи.
Тем не менее, можно начальника успокоить. :) Жмите кнопочку и создавайте таблицу. :rolleyes:
p.s. кстати, внимание, сразу после нажатия кнопочки очищаются данные на Лист2, так что если это нежелательно, примите меры. Для начала можно просто заремить процедуру "очистить".
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
SunKiSSka
Сообщения: 68
Зарегистрирован: 11 июл 2007, 12:58
Откуда: Санкт-Петербург

VictorM спасибо Вам огромное!!!!
Сейчас буду разбираться ))
ZORRO2005
Сообщения: 25
Зарегистрирован: 11 июн 2006, 21:48

Предложу вариант без VBA:
Вложения
test3.zip
(11.34 КБ) 32 скачивания
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

ZORRO2005,
Предложу вариант без VBA
лихо, мне понравилось :rolleyes:
чёт я оформулах не подумал, зациклился на VBA :(
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
SunKiSSka
Сообщения: 68
Зарегистрирован: 11 июл 2007, 12:58
Откуда: Санкт-Петербург

ZORRO2005,

Спасибо, очень здорово :D

Я вот тоже делать начала с помошью формул, но потом все же решила реализовать этот отчет через VBA.

Спасибо, теперь у меня куча вариантов )) сейчас еще подобью конкретно под свои исходные данные, так как предложенная таблица была в упрощенном виде, дабы не загружать лишней информацией. В реальности же эти таблицы ОЧЕНЬ большие и сложнее, тем более что задача, как обычно это бывает, усложняется прямо с каждым часом ))

Еще раз спасибо! Постараюсь свой окончательный вариант выложить ))
SunKiSSka
Сообщения: 68
Зарегистрирован: 11 июл 2007, 12:58
Откуда: Санкт-Петербург

Еще вопросик небольшой. При разбиении данных по столбцам:

Код: Выделить всё

Range("A2:A1000").TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, Other:=True, OtherChar _
        :="/", FieldInfo:=Array(Array(1, 2), Array(2, 1)), TrailingMinusNumbers:=True
excel спрашивает "заменить содержимое конечных ячеек?".

А можно ли как-нибудь сделать, чтобы не выводилось это сообщение, а замена осуществлялась по умолчанию?
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

не буду утверждать что прав... и проверить сейчас не могу...
а попробуйте перед выполнением этого кода выключить
Application.DisplayAlerts = False

(ну, а в конце кода не забудьте включить...)
Ответить