Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 2)

Автор: Korrea
Дата сообщения: 28.07.2009 10:06
Спасибо, за ответы. В таком случае, буду читать, как прицепить макрос к какому-нибудь событию. А пока что конкретных вопросов нет... (((
Автор: Alexikit
Дата сообщения: 28.07.2009 11:38
Mushroomer
Мне кажется для Access слишком много данных. Как я поняла имена директорий и файлов стандартизованы. Можно написать одну программу, которая по диапазону дат выберет необходимую директорию(или несколько), уже там необходимый файл(или файлы) а там нужные листы, потом строки и извлечет нужную информацию. Но это только если имена директорий и файлов однозначно привязаны к дате. И это будет работать, сколько к ней не добавляй.
Автор: qwerty550
Дата сообщения: 28.07.2009 12:24
Что делает этот код может кто нить объяснить хоть приблезительно. Макрос рабочий на 110%, с 5 % погрешностью. Мне надо правильно расставить данные,судя по коду их надо в Лист1 или Лист2. Где должны быть входные,а где выходные я не понел и вот в этом вопросе нужен ваш совет нужен ваш профессиональный совет. Заранее благодарен.

Код: Sub Макрос1()

i = 3
Range("H3").Select
STAR = 1
NOV = 1

While i <= 65000
While (STAR = NOV)

NOV = Cells(i, "H").Value
If Len(NOV) = 0 Then
NOV = STAR
End If

Cells(i, "H").Value = STAR
i = i + 1

Wend

STAR = NOV
Wend
Range("H6").Select
End Sub
Автор: urmigar
Дата сообщения: 28.07.2009 13:49
qwerty550


Цитата:
приблезительно


Цитата:
запитая

Жжёшь


Цитата:
Как запостить в виде таблицы не нашел

Посмотри здесь список кодов


Цитата:
Что делает этот код может кто нить объяснить хоть приблезительно.

Ну первый макрос работает на текущем листе, во втором макросе считается, что на первом листе нужные логины, в во второй добавляется статистика (какой-то лог?). Проверяется, есть ли запись, если есть - то апдейт её, а иначе добавляется новая запись с данными.
Автор: febreze2009
Дата сообщения: 28.07.2009 22:29
Подскажите пожалуйста, как программно закрыть открытое окно Excel при попытке закрыть активную форму этого приложения Excel? (Office 2003)
Автор: Mont1
Дата сообщения: 29.07.2009 03:53
febreze2009
Попробуй

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Workbooks.Close
End Sub
Автор: febreze2009
Дата сообщения: 29.07.2009 06:26
Спасибо. Попробую
Автор: 5tas
Дата сообщения: 31.07.2009 08:04
Подскажите пожалуйста, возможно ли каким-либо образом сделать сетку в элементе управления listbox? Если нет, то какой существует элемент управления, который бы представлял данные в виде таблицы?
Автор: visual73
Дата сообщения: 31.07.2009 08:51
5tas
MSFlexGrid, DataGrid (из VB), есть и другие
Автор: TGR3
Дата сообщения: 31.07.2009 09:21
добрый день вот такой вопрос есть таблица с большим количеством цифр
клонка 1    колонка 2    колонка 3    колонка 4    колонка 5
8512    9030    853    3524    855799
9829    830    901    71    85799
95829    9050    968    511    851708
90829    90830    968    9830    1708
90846    99830    968    71    81708


так вот надо наити одинакоые цифры которые присутвують в каждой клонке. как это сделать не могу додумать.. может дадите направления или даже макрос какой нибудь как ее решить.
http://img228.imageshack.us/img228/5695/exel.jpg
заранее спасибо.. пока пойду думать как это сделать самому

Автор: SAS888
Дата сообщения: 31.07.2009 11:04
TGR3

Цитата:
надо наити одинакоые цифры которые присутвують в каждой клонке

Ну, нашли... И куда их?
Автор: TGR3
Дата сообщения: 31.07.2009 11:39
списоком можно без разницы просто нужны эти данные.. вот нашел в инете пока искал
=ЕСЛИ($B10="";"";СЧЁТЕСЛИ($B$10:$B10;$B10)=1)
он будет показывать были ли повторяющие цифры или нет... тока там не разными столбами надо а одним столбиком... так что вот так как то...
может что попроще есть.
Автор: Kirov23
Дата сообщения: 31.07.2009 18:19
здравствуйте, простите если об этом уже спрашивали ранее. Я не нашел((. Подскажите плз, как сделать так, чтоб при запуске файла, допустим, temp.xls автоматически выполнялся макрос. Чтоб не приходилось каждый раз запускать макрос из Сервиса - Макрос - Макросы (или сочитанием клавиш). Чтоб все выполнялось без вмешательства пользователя. И что нужно дописать в конце макроса, чтоб после его выполнения эксель закрывался? Спасибо.
Автор: SERGE_BLIZNUK
Дата сообщения: 31.07.2009 20:48
Kirov23

Цитата:
чтоб при запуске файла, допустим, temp.xls автоматически выполнялся макрос

откройте temp.xls
перейдите в редактор VBA (Alt-F11)
двойной щелчок по ЭтаКнига в составе вашего temp.xls (это слева, в дереве проектов)
вставляете код:

Код:
Private Sub Workbook_Open()
MsgBox "Запустился макрос!"
End Sub
Автор: TGR3
Дата сообщения: 01.08.2009 09:01
SERGE_BLIZNUK


Цитата:
А Вы не путаете цифры и числа ?

как я могу их путать ? мне надо наити одинаковые цифры в каждой из колонок что тут сложно понять.. два ответа на мои вопрос и там переспрашивание просто .
Автор: SERGE_BLIZNUK
Дата сообщения: 01.08.2009 16:12

Цитата:
как я могу их путать ? мне надо наити одинаковые цифры в каждой из колонок что тут сложно понять..

афигеть.. а я уверен, что путаете..
определение, что такое цифра из википедии

вот, в вашем примере (берём первую строку):
8512 9030 853 3524 855799
в первой числе и третьем одинаковая ЦИФРА 5
в втором числе и третьем одинаковая ЦИФРА 3
в третьем числе и четвёртом числе одинаковые ЦИФРЫ 5 и 3
в четвёртом и пятом числе одинаковая ЦИФРЫ 5

Вы такой ответ хотите получить?
А в каком столбце Вам такое нужно увидеть?!


лучше бы вы приложили табличку с двуми листами. на первом листе исходные данные.
на втором - ЧТО ИМЕННО ВЫ ХОТИТЕ ПОЛУЧИТЬ...

удачи.




Добавлено:

или, неужели действительно не путаете?! o_O
тогда для вашего же примера:

Код:
колонка1 колонка2 колонка3 колонка4 колонка5
8512 9030 853 3524 855799
9829 830 901 71 85799
95829 9050 968 511 851708
90829 90830 968 9830 1708
90846 99830 968 71 81708
Автор: TGR3
Дата сообщения: 01.08.2009 16:39
я прошу прощения... с утра что то не понял вас... и пост свои отредоктатировал , но почему то не внеслись изменния... так вот да мне надо наити числа, а не цифры ...
Автор: SERGE_BLIZNUK
Дата сообщения: 01.08.2009 16:47
TGR3 - уже лучше.
ну ещё раз.... Вам нужно привести пример и результат, что должно получится.
в приведённом Вами примере нет НИ ОДНОГО ОДИНАКОВОГО числа, которое присутствует во всех колонках...

Автор: visual73
Дата сообщения: 01.08.2009 16:53
SERGE_BLIZNUK
как трудно с объяснениями однако так глядишь через пару страниц поймем чего же требуется )
Автор: SERGE_BLIZNUK
Дата сообщения: 01.08.2009 17:41
visual73 точно!
если честно, я не стал писать об этом, но я уже начал уставать пытаться выяснить у автора вопроса, что же он хочет получить в конце то концов... прям партизан какой-то...
и я ещё не удивлюсь, если эта задача решается формулами, без всякого VBA...
Автор: 5tas
Дата сообщения: 02.08.2009 06:58
visual73

Цитата:
MSFlexGrid, DataGrid (из VB), есть и другие

А Вы пробовали использовать MSFlexGrid в Excel? Дело в том, что при использовании этого элемента управления размер книги Excel, в уоторой он находится, увеличивается при каждом запуске формы. Размер моего файло дошёл аж до 341 МегаБайта! Кто-нибудь знает в чём причина?
Автор: visual73
Дата сообщения: 02.08.2009 07:27
5tas
Я использовал этот элемент (flexgrid) в Excel (XP,2003), и что-то не помню такого явления %)
Автор: 5tas
Дата сообщения: 02.08.2009 07:44
visual73
Нашёл как это можно обойти:Ссылка
Автор: TGR3
Дата сообщения: 02.08.2009 22:17
SERGE_BLIZNUK
хорошо попытка номер 3 или 4 или вторая объяснить... есть числа в столбиках, по вертикали количество чисел везде разное ... надо наити число которое чаще минимум 6 раз находиться в каждой строке, максимум присутствует во всех строках.
http://img30.imageshack.us/img30/1116/333igp.png
так вот там все видно таблица маленкая моя же таблица большая там 40 столбов или больше и строк в некоторых столбах достигает 1000 , так вот тут по картинке правильные числа (а не цифры ) это 2 (5 строка, просто число два) которая встречаеться везде и 32 которая попадает под 6 совпадение в одной строке.
теперь понятно выразился или мне лучше ап стенку убиться?
Автор: SERGE_BLIZNUK
Дата сообщения: 03.08.2009 10:05
TGR3
я Вам честно скажу, понятие объяснять и растолковывать явно не Ваша сильная сторона!
вот макрос, который решает Вашу задачу:
[more]

Код:
Sub CountRepeats()
Dim MyuArray As Variant, IRow%, i&, k&, IndexMax&, CountMax&, CountCur&

For IRow = 2 To _
ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
MyuArray = Range(Cells(IRow, 1), Cells(IRow, 40))
IndexMax = -1
CountMax = -1
For i = LBound(MyuArray, 2) To UBound(MyuArray, 2)
CountCur = 0
For k = LBound(MyuArray, 2) To UBound(MyuArray, 2)
If (MyuArray(1, i) = MyuArray(1, k)) Then CountCur = CountCur + 1
Next k
If CountCur > CountMax Then
CountMax = CountCur
IndexMax = i
End If
Next i

Cells(IRow, 40 + 1).ClearContents
Cells(IRow, 40 + 2).ClearContents
If CountMax >= 6 Then
Cells(IRow, 40 + 1) = MyuArray(1, IndexMax)
Cells(IRow, 40 + 2) = CountMax
'MsgBox " Максимальное значение = " & MyuArray(1, IndexMax) _
& " встречается " & Str(CountMax) & " раз. "
End If
Next IRow

End Sub
Автор: Kirov23
Дата сообщения: 03.08.2009 13:21
SERGE_BLIZNUK

Благодарю, работает как надо.
Автор: filmax
Дата сообщения: 03.08.2009 16:21
Всем привет!

Помогите освоить многомерные массивы с сортировкой и выборкой данных из них.
Чтобы было понятно начну с самого начала. Собственно задача:

Есть лист книги "Оформленные ВСЕГО" содержащий много столбцов и каждый день добавляющиеся строки.
Нужно выбрать из этого листа данные 4-х столбцов в массив и отсортировать по фамилиии и дате:

F - фамилия H - номер G - дата M - стоимость

Сбросить результат в соседний лист помесячно

http://rapidshare.com/files/263234237/data.rar.html или http://rapidshare.de/files/48022094/data.rar.html

Какой массив выбрать динамический или фиксированный? Один 4-х мерный или 4 одномерных?
Автор: SERGE_BLIZNUK
Дата сообщения: 03.08.2009 21:34
filmax, ещё не смотрел Ваш пример. обязательно посмотрю.
Но, пока, наугад, могу сказать, что лучше копировать нужные данные и сортировать их прямо на листе функциями Excel - это будет кратко и эффективно. Иначе сортировку многомерного массива Вам прийдётся реализовывать самостоятельно. Это несложно, но достаточно муторно...

p.s. повторю — могу ошибаться. это то, что пришло в голову после того, как прочитал вопрос. файл ещё НЕ СМОТРЕЛ.
Автор: filmax
Дата сообщения: 03.08.2009 21:43
То есть лучше скинуть данные из массива на лист, а потом отсортировать?
Автор: SERGE_BLIZNUK
Дата сообщения: 03.08.2009 22:27
filmax, не знаю насчет того лучше или нет, но, имхо, проще!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.