Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/как создать столбец-счетчик? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » как создать столбец-счетчик? (Макросы Sub)
как создать столбец-счетчик?
maxwax Дата: Воскресенье, 11.08.2013, 15:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
Всем привет.
Делаю журнал регистрации.
Задача такая: нужен макрос, при запуске которого в столбце, содержащем 1,2,3 и т.д. каждый раз будет появляться новое значение, большее на 1.
Потом тем же макросом рядом с этим значением автоматически будет вписываться текст из ранее заполненной формы, а само это значение проставится наверху формы, но это я умею и оно будет потом...
Честно говоря, изучаю макросы всего третий день и все из-за этой штуки, хотя с екселем раньше работал плотно. Понял пока немного.

Сложность в том, что каждый раз надо адресоваться к ячейке на одну строку ниже. Была мысль воспользоваться заранее вычисленной функцией МАКС (ведь значения постоянно возрастают), но не могу понять, как привязать это значение или адрес к объекту Cells.
А как было бы хорошо, если бы эта штука поддерживала относительную адресацию...
 
Ответить
СообщениеВсем привет.
Делаю журнал регистрации.
Задача такая: нужен макрос, при запуске которого в столбце, содержащем 1,2,3 и т.д. каждый раз будет появляться новое значение, большее на 1.
Потом тем же макросом рядом с этим значением автоматически будет вписываться текст из ранее заполненной формы, а само это значение проставится наверху формы, но это я умею и оно будет потом...
Честно говоря, изучаю макросы всего третий день и все из-за этой штуки, хотя с екселем раньше работал плотно. Понял пока немного.

Сложность в том, что каждый раз надо адресоваться к ячейке на одну строку ниже. Была мысль воспользоваться заранее вычисленной функцией МАКС (ведь значения постоянно возрастают), но не могу понять, как привязать это значение или адрес к объекту Cells.
А как было бы хорошо, если бы эта штука поддерживала относительную адресацию...

Автор - maxwax
Дата добавления - 11.08.2013 в 15:45
SkyPro Дата: Воскресенье, 11.08.2013, 16:47 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Можно формулой пронумеровать
В ячейку А1 вписать 1.
В ячейку А2 формулу:
Код
=ЕСЛИ(И(A1<>"";B2<>"");A1+1;"")


Если хотите разобраться в макросе сами, то посмотрите OFSSET (сдвиг)
[vba]
Код
Sub adr()
MsgBox Selection.Offset(1, 0).Address ' Выводит адрес ячейки на одну строку ниже выбранной
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
СообщениеМожно формулой пронумеровать
В ячейку А1 вписать 1.
В ячейку А2 формулу:
Код
=ЕСЛИ(И(A1<>"";B2<>"");A1+1;"")


Если хотите разобраться в макросе сами, то посмотрите OFSSET (сдвиг)
[vba]
Код
Sub adr()
MsgBox Selection.Offset(1, 0).Address ' Выводит адрес ячейки на одну строку ниже выбранной
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 11.08.2013 в 16:47
ShAM Дата: Воскресенье, 11.08.2013, 17:04 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Как вариант. Находим последнюю заполненную ячейку в столбце А:
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]
В ячейку ниже записываем значение на 1 больше.
[vba]
Код
Cells(iLastRow + 1, 1) = Cells(iLastRow, 1) + 1
[/vba]
 
Ответить
СообщениеКак вариант. Находим последнюю заполненную ячейку в столбце А:
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]
В ячейку ниже записываем значение на 1 больше.
[vba]
Код
Cells(iLastRow + 1, 1) = Cells(iLastRow, 1) + 1
[/vba]

Автор - ShAM
Дата добавления - 11.08.2013 в 17:04
maxwax Дата: Воскресенье, 11.08.2013, 17:41 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
SkyPro
Извините, я кажется не очень удачно объяснил. Идею с формулой я понял, спасибо, но.... Предложенный вами вариант мне не подходит, по причине того, что мне нужна фиксация номеров в форме и в журнале, то есть весь процесс работы выглядит так;
1) заполняю форму
2) запускаю макрос, получаю номер и дату для формы и запись в строке
3) распечатываю форму
4) и заполняю следующую.
Документации стало так много, что лазить в журнал за очередным номером - сущее мучение.
Вот если бы можно было начать с заполнения журнала, тогда это бы заработало. Однако текст, вносимый в форму, настолько различен по объему, что его иногда приходится разбивать на две, иногда на три строки, а форма имеет заранее настроенные, строго определенные ширину столбца и высоту строки, и размер шрифта уменьшать уже некуда. А так ексель-моксель заполнит строку журнала при помощи функции "сцепить".

А теперь с макросом.
Цитата
MsgBox Selection.Offset(1, 0).Address

Как бы подставить вместо единицы формулу максимума в диапазоне - это вообще можно сделать? Вся проблема как раз в этом. Потому что поработал я в пятницу, а в понедельник пришел и стал делать дальше, а мои номера пошли со 2го, стирая старые записи, потому что при открытии книги курсор помещен в ячейку А1 и я забыл его переместить на последнюю сделанную в пятницу запись. Я, конечно, могу и не забывать, но понимаете, понедельник день тяжелый


Сообщение отредактировал maxwax - Воскресенье, 11.08.2013, 17:49
 
Ответить
СообщениеSkyPro
Извините, я кажется не очень удачно объяснил. Идею с формулой я понял, спасибо, но.... Предложенный вами вариант мне не подходит, по причине того, что мне нужна фиксация номеров в форме и в журнале, то есть весь процесс работы выглядит так;
1) заполняю форму
2) запускаю макрос, получаю номер и дату для формы и запись в строке
3) распечатываю форму
4) и заполняю следующую.
Документации стало так много, что лазить в журнал за очередным номером - сущее мучение.
Вот если бы можно было начать с заполнения журнала, тогда это бы заработало. Однако текст, вносимый в форму, настолько различен по объему, что его иногда приходится разбивать на две, иногда на три строки, а форма имеет заранее настроенные, строго определенные ширину столбца и высоту строки, и размер шрифта уменьшать уже некуда. А так ексель-моксель заполнит строку журнала при помощи функции "сцепить".

А теперь с макросом.
Цитата
MsgBox Selection.Offset(1, 0).Address

Как бы подставить вместо единицы формулу максимума в диапазоне - это вообще можно сделать? Вся проблема как раз в этом. Потому что поработал я в пятницу, а в понедельник пришел и стал делать дальше, а мои номера пошли со 2го, стирая старые записи, потому что при открытии книги курсор помещен в ячейку А1 и я забыл его переместить на последнюю сделанную в пятницу запись. Я, конечно, могу и не забывать, но понимаете, понедельник день тяжелый

Автор - maxwax
Дата добавления - 11.08.2013 в 17:41
maxwax Дата: Воскресенье, 11.08.2013, 17:47 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
ShAM
Цитата
Как вариант. Находим последнюю заполненную ячейку в столбце А:
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row

В ячейку ниже записываем значение на 1 больше.
Cells(iLastRow + 1, 1) = Cells(iLastRow, 1) + 1

Кажется, это то что нужно. Но опять же - помнит ли ексель последнюю заполненную в пятницу ячейку? Если нет, то этот вариант не проходит.
 
Ответить
СообщениеShAM
Цитата
Как вариант. Находим последнюю заполненную ячейку в столбце А:
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row

В ячейку ниже записываем значение на 1 больше.
Cells(iLastRow + 1, 1) = Cells(iLastRow, 1) + 1

Кажется, это то что нужно. Но опять же - помнит ли ексель последнюю заполненную в пятницу ячейку? Если нет, то этот вариант не проходит.

Автор - maxwax
Дата добавления - 11.08.2013 в 17:47
SkyPro Дата: Воскресенье, 11.08.2013, 17:57 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Пример приложите и будем думать.


skypro1111@gmail.com
 
Ответить
СообщениеПример приложите и будем думать.

Автор - SkyPro
Дата добавления - 11.08.2013 в 17:57
Michael_S Дата: Воскресенье, 11.08.2013, 18:00 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Но опять же - помнит ли ексель последнюю заполненную в пятницу ячейку?

нет, не помнит. Каждый раз ищет.

...без файла-примера разговор ни о чем...
 
Ответить
Сообщение
Но опять же - помнит ли ексель последнюю заполненную в пятницу ячейку?

нет, не помнит. Каждый раз ищет.

...без файла-примера разговор ни о чем...

Автор - Michael_S
Дата добавления - 11.08.2013 в 18:00
maxwax Дата: Воскресенье, 11.08.2013, 18:41 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
Оказывается, помнит. ShAM, ваша идея работает, спасибо! Вот файл
К сообщению приложен файл: 1708681.xls (31.0 Kb)
 
Ответить
СообщениеОказывается, помнит. ShAM, ваша идея работает, спасибо! Вот файл

Автор - maxwax
Дата добавления - 11.08.2013 в 18:41
KuklP Дата: Воскресенье, 11.08.2013, 19:30 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Я бы чуть изменил код Алишера:
[vba]
Код
    Cells(ilastrow + 1, 1) = Application.Max(Range("a1:a" & ilastrow)) + 1
[/vba]
Избавит от дублей в случаях сортировок.
помнит ли ексель последнюю заполненную в пятницу ячейку
Вам же Михаил ответил - нет. Экс помнит последнюю выделенную ячейку(и).


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 11.08.2013, 19:31
 
Ответить
СообщениеЯ бы чуть изменил код Алишера:
[vba]
Код
    Cells(ilastrow + 1, 1) = Application.Max(Range("a1:a" & ilastrow)) + 1
[/vba]
Избавит от дублей в случаях сортировок.
помнит ли ексель последнюю заполненную в пятницу ячейку
Вам же Михаил ответил - нет. Экс помнит последнюю выделенную ячейку(и).

Автор - KuklP
Дата добавления - 11.08.2013 в 19:30
maxwax Дата: Воскресенье, 11.08.2013, 21:34 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 80% ±

Excel 2010
Цитата
Избавит от дублей в случаях сортировок

Спасибо, учту, хотя сортировок тут не планируется - раз, и дублей не должно быть по определению, все номера уникальны - два. Будет время, разберусь подробнее, а пока - работает, и то ладно. А за труды всем спасибо.
Цитата
Вам же Михаил ответил - нет. Экс помнит последнюю выделенную ячейку(и).

Но ведь работает... кажется?
Открываю книгу. В ячейке С8 (первой попавшейся) набираю "аджлповлаоп". После этого запускаю макрос - все работает как надо, несмотря на то последняя заполненная ячейка не та. Все работает и после закрытий-открытий, с сохранением и без.
Я бы приложил полный файл со всеми наработками, но он на работе, и принести его домой я не могу. И выхода в инет оттуда нету. Я не исключаю, что проблемы возникнут, когда я буду заполнять форму, но там посмотрим.


Сообщение отредактировал maxwax - Воскресенье, 11.08.2013, 21:42
 
Ответить
Сообщение
Цитата
Избавит от дублей в случаях сортировок

Спасибо, учту, хотя сортировок тут не планируется - раз, и дублей не должно быть по определению, все номера уникальны - два. Будет время, разберусь подробнее, а пока - работает, и то ладно. А за труды всем спасибо.
Цитата
Вам же Михаил ответил - нет. Экс помнит последнюю выделенную ячейку(и).

Но ведь работает... кажется?
Открываю книгу. В ячейке С8 (первой попавшейся) набираю "аджлповлаоп". После этого запускаю макрос - все работает как надо, несмотря на то последняя заполненная ячейка не та. Все работает и после закрытий-открытий, с сохранением и без.
Я бы приложил полный файл со всеми наработками, но он на работе, и принести его домой я не могу. И выхода в инет оттуда нету. Я не исключаю, что проблемы возникнут, когда я буду заполнять форму, но там посмотрим.

Автор - maxwax
Дата добавления - 11.08.2013 в 21:34
KuklP Дата: Воскресенье, 11.08.2013, 22:37 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Каждый раз ищет.

Что, по-Вашему делает эта строка:
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]?
Так ВЫЧИСЛЯЕТСЯ номер последней заполненной строки в столбце 1.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 11.08.2013, 22:39
 
Ответить
Сообщение
Каждый раз ищет.

Что, по-Вашему делает эта строка:
[vba]
Код
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
[/vba]?
Так ВЫЧИСЛЯЕТСЯ номер последней заполненной строки в столбце 1.

Автор - KuklP
Дата добавления - 11.08.2013 в 22:37
vladcodex Дата: Суббота, 18.10.2014, 21:33 | Сообщение № 12
Группа: Гости
Помогите. Есть два столбца в Exel таблице (например А1:А100 и В1:В100), в которых представлены различные числовые значения. Необходимо выполнить подсчёт всех ячеек из диапазона А, которые больше соседней ячейки (в той же строке) из диапазона В.
В идеале сделать вв трёх нижних ячейках А101- подсчёт количества значений что больше, В101 - подсчёт количества значений что меньше, С101- подсчёт количества значений где равно. Также важным является исключение пустых ячеек (чтобы счётчик не посчитал их как равно).

[moder]Читаем Правила форума, создаём свою тему, прикладываем файл с примером[/moder]
 
Ответить
СообщениеПомогите. Есть два столбца в Exel таблице (например А1:А100 и В1:В100), в которых представлены различные числовые значения. Необходимо выполнить подсчёт всех ячеек из диапазона А, которые больше соседней ячейки (в той же строке) из диапазона В.
В идеале сделать вв трёх нижних ячейках А101- подсчёт количества значений что больше, В101 - подсчёт количества значений что меньше, С101- подсчёт количества значений где равно. Также важным является исключение пустых ячеек (чтобы счётчик не посчитал их как равно).

[moder]Читаем Правила форума, создаём свою тему, прикладываем файл с примером[/moder]

Автор - vladcodex
Дата добавления - 18.10.2014 в 21:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » как создать столбец-счетчик? (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!