Excel проход по ячейкам

Функция СМЕЩ в Excel предназначена для создания ссылки на определенную ячейку или диапазон ячеек, находящихся на определенном расстоянии от указанной ячейки, измеряемом в заданном в качестве аргумента количестве столбцов и строк, и возвращает соответствующую ссылку. Синтаксис данной функции позволяет указывать требуемое количество возвращаемых столбцов и строк.

Примеры использования функции СМЕЩ в Excel

Пример 1. В таблицу Excel на протяжении экзамена записываются оценки, которые получили уже сдавшие предмет экзамены. Реализовать алгоритм динамического расчета среднего значения балла за экзамен для группы студентов.

Вид исходной таблицы:

Пример 1.

Формула для расчета:

Функция ЕСЛИОШИБКА используется для вывода сообщения об отсутствии данных для расчета. Функция СРЗНАЧ принимает диапазон ячеек, возвращаемых функцией СМЕЩ со следующими параметрами:

  • B3 – ссылка на начальную ячейку (точку отсчета);
  • 0 – нулевое смещение по строкам;
  • 0 – нулевое смещение по столбцам;
  • СЧЁТ(B3:B14) – количество ячеек из диапазона B3:B14, которые содержат ненулевые значения, характеризующее высоту диапазона возвращаемых ячеек;
  • 1 – ширина диапазона возвращаемых значений (в 1 столбец).

Результаты расчета по мере заполнения данными:

СЧЁТ.

Примечания к примеру:

  1. Данные должны вноситься последовательно в каждую новую строку, иначе расчет выполняться не будет.
  2. Пример решения приведен в целях демонстрации использования функции СМЕЩ, решение задачи может быть реализовано более простым и надежным способом.



Динамическое обновление итоговых данных таблицы в Excel

Пример 2. В таблице Excel внесены данные о количестве продаж товаров за все время работы компании. Для еженедельного учета требуется выводить данные о продажах (общая сумма проданных товаров) за прошедшие 7 дней. Реализовать динамическое обновление данных.

Вид исходной таблицы данных:

Пример 2.

Для расчета суммы проданных единиц товаров за последние 7 дней используем формулу:

Описание аргументов функции СМЕЩ:

  • B3 – ссылка на ячейку, относительно которой выполняется отсчет;
  • СЧЁТЗ(B3:B1000)-7 – функция, подсчитывающая количество непустых ячеек в диапазоне B3:B1000 (ячейка B1000 взята условно с запасом для последующих записей). От итогового результат вычитается число 7, поскольку по условию необходимо получить данные за неделю. В целом выражение определяет начальную позицию массива возвращаемых ячеек по вертикали относительно точки отсчета B3;
  • 0 – нулевое смещение по столбцам (искомый диапазон ячеек находится в том же столбце, что и точка отсчета B3);
  • 7 – высота диапазона возвращаемых ячеек (7 ячеек);
  • 1 – ширина диапазона возвращаемых ячеек.

Полученный результат в результате расчетов:

Динамическое обновление данных.

При добавлении новых данных пересчет выполняется автоматически.

Выборка значений из таблицы с помощью функции СМЕЩ в Excel

Пример 3. В таблице содержатся данные о средних значениях курсов валют по месяцам года. Реализовать алгоритм вывода значений курсов в строку под таблицей по выбранному номеру месяца.

Исходная таблица данных имеет следующий вид:

Пример 3.

Используем элемент управления «Счетчик» для выбора номера месяца. Для этого добавим пункт ленты меню «Разработчик» нажатием правой кнопкой мыши по любому существующему ее элементу:

Разработчик.

Выберем пункт настройка ленты и в открывшемся окне установим флажок напротив пункта «Разработчик»:

установим флажок.

В ленте добавится новый пункт меню. Выберем его, найдем кнопку «Вставить» и нажмем ее:

Вставить.

Выберем элемент «Счетчик», наведем курсор (вместо стрелки форма «+») на требуемую ячейку (в данном случае A16), выделим область для счетчика. После того, как кнопка мыши будет отпущена, появится заготовка счетчика. Нажмем правой кнопкой по счетчику и выберем пункт «Формат объекта»:

Формат объекта.

Заполним текущее и минимальное значения, а также установим связь с ячейкой, в которой данный счетчик находится:

установим связь с ячейкой.

Нажмем кнопку «ОК» и выделим любую другую ячейку на листе, чтобы завершить процесс настройки счетчика. В итоге получим:

Счетчик.

Для вывода курсов доллара и евро соответственно используем функции:

=СМЕЩ(A1;A16;1)

Для вывода курсов доллара.

=СМЕЩ(A1;A16;2)

В результате имеем возможность динамического вывода значений в зависимости от выбранного номера месяца. Примеры работы:

Для вывода курсов евро.

Особенности использования функции СМЕЩ в Excel

Функция имеет следующую синтаксическую запись:

=СМЕЩ(ссылка;смещение_по_строкам;смещение_по_столбцам;[высота];[ширина])

Описание аргументов:

  • ссылка – обязательный для заполнения аргумент, принимающий данные ссылочного типа, характеризующие ячейку или диапазон ячеек, относительно которых производится отсчет расстояния до возвращаемых ячейки или диапазона ячеек;
  • смещение_по_строкам — обязательный аргумент, который принимает данные числового типа, характеризующие расстояние между точкой отсчета (указанной аргументом ссылка) и возвращаемой ячейкой либо диапазоном ячеек. В качестве аргумента может быть передано:
  1. Положительное целое число. В этом случае смещение относительно точки отсчета выполняется вправо на указанное число ячеек.
  2. 0 – искомая ячейка или диапазон ячеек находятся в текущей строке.
  3. Отрицательное число – смещение влево на указанное число, взятое по модулю.
  4. Дробное число – функция СМЕЩ выполняет усечение дробной части, и использует полученное целое число для определения величины смещения по строкам.
  • смещение_по_столбцам – обязательный аргумент, принимающий числовые значения, указывающие на величину смещения по столбцам относительно выбранной точки отсчета. Указанные свойства аргумента смещ_по_строкам верны для смещ_по_столбцам в интерпретации по вертикали. Например:
  1. Функция =СМЕЩ(A5;0;2) вернет ссылку на ячейку C5;
  2. Функция =СМЕЩ(A5;2;0) вернет ссылку на ячейку A7;
  3. Функция СМЕЩ с аргументами (C5;0-2) вернет ссылку на ячейку A5;
  4. Функция с аргументами (D5;0;-3,8) вернет ссылку на ячейку A5.
  • [высота] – необязательный аргумент, принимающий числовое значение, характеризующее число ячеек по высоте (количество строк) возвращаемого диапазона ячеек. Принимает значения из диапазона целых положительных чисел, начиная от 1 (если принимает значение 0, функция СМЕЩ вернет код ошибки #ССЫЛКА!);
  • [ширина] – необязательный для заполнения аргумент, принимающий числовое значение, которое характеризует ширину диапазона возвращаемых ячеек. Передаваемое значение должно быть целым положительным числом от 1 до +∞.

Примечания:

  1. Если функция СМЕЩ ссылается на ячейку или диапазон ячеек, которые находятся вне пределов рабочего листа по условиям, заданным параметрами смещ_по_строкам и смещ_по_столбцам, результатом выполнения данной функции будет код ошибки #ССЫЛКА!.
  2. Если необязательные аргументы [высота] и [ширина] явно не казаны, они принимают значения, равные высоте и ширине диапазона ячеек, указанного в качестве аргумента ссылка. Если ссылка принимает одну ячейку, данные аргументы по умолчанию принимают значения 1 и 1 соответственно.
  3. Функция СМЕЩ может быть использована в качестве аргумента любой функции, принимающей данные ссылочного типа.
  4. Если аргумент ссылка принимает ссылочное значение на единственную ячейку, а необязательные параметры указывают на диапазон (заданы числами, больше 1), тогда функция вернет код ошибки #ЗНАЧ! (пример с ошибкой – результат выполнения функции с аргументами (A5;2;3;3;2)).

Skip to content

Как сделать перебор диапазона ячеек

На чтение 2 мин. Просмотров 14.1k.

Что делает макрос: Этот базовый макрос показывает вам простой способ сделать перебор диапазона ячеек по одной и выполнить какое-либо действие.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

В этом макросе используются две переменные объекта Range. Одна из переменных отражает объем данных, с которым мы работаем, в то время как другая используется для хранения каждой отдельной клетки в диапазоне. Потом мы используем оператор For Each, чтобы активировать или принести каждую ячейку в фокусе целевого диапазона.

Код макроса

Sub PereborDiapazonaYacheek()
'Шаг 1: Объявить переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Определение целевого диапазона.
Set MyRange = Range("D6:D17")
'Шаг 3: Запуск цикла через диапазон.
For Each MyCell In MyRange
'Шаг 4: Какое-либо действие с каждой ячейкой.
If MyCell.Value > 3000 Then
MyCell.Font.Bold = True
End If
'Шаг 5: Перейти к следующей ячейке в диапазоне
Next MyCell
End Sub

Как этот код работает

  1. Макрос объявляет две переменные объекта Range. Одна из них, называется MyRange, держит весь целевой диапазон. Другая, называемый MyCell, держит каждую ячейку в диапазоне, так как макрос проводит цикл через них один за другим.
  2. На шаге 2 мы заполняем переменную MyRange с целевым диапазоном. В этом примере мы используем Range («D6:D17»). Если ваш целевой диапазон является именованным, можно просто ввести его название — Range («MyNamedRange»).
  3. На этом этапе макрос начинает цикл через каждую ячейку в целевом диапазоне, активизируя ее.
  4. После того, как ячейка активируется, можно с ней что-то сделать. Это «что-то» на самом деле зависит от поставленной задачи. Вы можете удалять строки, когда активная ячейка имеет определенное значение, или вы можете вставить строку между каждой активной ячейки. В этом примере макрос меняется шрифт полужирный для любого элемента, который имеет значение больше, чем 3000.
  5. На шаге 5, макрос возвращается назад, чтобы получить следующую ячейку. После активации всех ячеек в целевом диапазоне, макрос заканчивает работу.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

Цикл For Each… Next в VBA Excel, его синтаксис и описание отдельных компонентов. Примеры использования цикла For Each… Next.

Цикл For Each… Next в VBA Excel предназначен для выполнения блока операторов по отношению к каждому элементу из группы элементов (диапазон, массив, коллекция). Этот замечательный цикл применяется, когда неизвестно количество элементов в группе и их индексация, в противном случае, более предпочтительным считается использование цикла For…Next.

For Each element In group

    [ statements ]

    [ Exit For ]

    [ statements ]

Next [ element ]

В квадратных скобках указаны необязательные атрибуты цикла For Each… Next.

Компоненты цикла For Each… Next

Компонент Описание
element Обязательный атрибут в операторе For Each, необязательный атрибут в операторе Next. Представляет из себя переменную, используемую для циклического прохода элементов группы (диапазон, массив, коллекция), которая предварительно должна быть объявлена с соответствующим типом данных*.
group Обязательный атрибут. Группа элементов (диапазон, массив, коллекция), по каждому элементу которой последовательно проходит цикл For Each… Next.
statements Необязательный** атрибут. Операторы вашего кода.
Exit For Необязательный атрибут. Оператор выхода из цикла до его окончания.

*Если цикл For Each… Next используется в VBA Excel для прохождения элементов коллекции (объект Collection) или массива, тогда переменная element должна быть объявлена с типом данных Variant, иначе цикл работать не будет.

**Если не использовать в цикле свой код, смысл применения цикла теряется.

Примеры циклов For Each… Next

Цикл для диапазона ячеек

На активном листе рабочей книги Excel выделите диапазон ячеек и запустите на выполнение следующую процедуру:

Sub test1()

Dim element As Range, a As String

  a = «Данные, полученные с помощью цикла For Each… Next:»

    For Each element In Selection

      a = a & vbNewLine & «Ячейка « & element.Address & _

      » содержит значение: « & CStr(element.Value)

    Next

  MsgBox a

End Sub

Информационное окно MsgBox выведет адреса выделенных ячеек и их содержимое, если оно есть. Если будет выбрано много ячеек, то полностью информация по всем ячейкам выведена не будет, так как максимальная длина параметра Prompt функции MsgBox составляет примерно 1024 знака.

Цикл для коллекции листов

Скопируйте следующую процедуру VBA в стандартный модуль книги Excel:

Sub test2()

Dim element As Worksheet, a As String

  a = «Список листов, содержащихся в этой книге:»

    For Each element In Worksheets

      a = a & vbNewLine & element.Index _

      & «) « & element.Name

    Next

  MsgBox a

End Sub

Информационное окно MsgBox выведет список наименований всех листов рабочей книги Excel по порядковому номеру их ярлычков, соответствующих их индексам.

Цикл для массива

Присвоим массиву список наименований животных и в цикле For Each… Next запишем их в переменную a. Информационное окно MsgBox выведет список наименований животных из переменной a.

Sub test3()

Dim element As Variant, a As String, group As Variant

group = Array(«бегемот», «слон», «кенгуру», «тигр», «мышь»)

‘или можно присвоить массиву значения диапазона ячеек

‘рабочего листа, например, выбранного: group = Selection

a = «Массив содержит следующие значения:» & vbNewLine

  For Each element In group

    a = a & vbNewLine & element

  Next

MsgBox a

End Sub

Повторим ту же процедуру VBA, но всем элементам массива в цикле For Each… Next присвоим значение «Попугай». Информационное окно MsgBox выведет список наименований животных, состоящий только из попугаев, что доказывает возможность редактирования значений элементов массива в цикле For Each… Next.

Sub test4()

Dim element As Variant, a As String, group As Variant

group = Array(«бегемот», «слон», «кенгуру», «тигр», «мышь»)

‘или можно присвоить массиву значения диапазона ячеек

‘рабочего листа, например, выделенного: group = Selection

a = «Массив содержит следующие значения:» & vbNewLine

  For Each element In group

    element = «Попугай»

    a = a & vbNewLine & element

  Next

MsgBox a

End Sub

Этот код, как и все остальные в этой статье, тестировался в Excel 2016.

Цикл для коллекции подкаталогов и выход из цикла

В этом примере мы будем добавлять в переменную a названия подкаталогов на диске C вашего компьютера. Когда цикл дойдет до папки Program Files, он добавит в переменную a ее название и сообщение: «Хватит, дальше читать не буду! С уважением, Ваш цикл For Each… Next.».

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Sub test5()

Dim FSO As Object, myFolders As Object, myFolder As Object, a As String

‘Создаем новый FileSystemObject и присваиваем его переменной «FSO»

Set FSO = CreateObject(«Scripting.FileSystemObject»)

‘Извлекаем список подкаталогов на диске «C» и присваиваем

‘его переменной «myFolders»

Set myFolders = FSO.GetFolder(«C:»)

a = «Папки на диске C:» & vbNewLine

‘Проходим циклом по списку подкаталогов и добавляем в переменную «a«

‘их имена, дойдя до папки «Program Files«, выходим из цикла

  For Each myFolder In myFolders.SubFolders

    a = a & vbNewLine & myFolder.Name

    If myFolder.Name = «Program Files» Then

      a = a & vbNewLine & vbNewLine & «Хватит, дальше читать не буду!» _

      & vbNewLine & vbNewLine & «С уважением,» & vbNewLine & _

      «Ваш цикл For Each... Next.«

  Exit For

    End If

  Next

Set FSO = Nothing

MsgBox a

End Sub

Информационное окно MsgBox выведет список наименований подкаталогов на диске C вашего компьютера до папки Program Files включительно и сообщение цикла о прекращении своей работы.

В результате работы программы будут выведены не только наименования подкаталогов, видимых при переходе в проводнике к диску C, но и скрытые и служебные папки. Для просмотра списка всех подкаталогов на диске C, закомментируйте участок кода от If до End If включительно и запустите выполнение процедуры в редакторе VBA Excel.


3 / 4 / 2

Регистрация: 05.04.2011

Сообщений: 179

1

15.09.2017, 04:12. Показов 743. Ответов 5


Студворк — интернет-сервис помощи студентам

Добрый день! Подскажите пожалуйста формулу как сделать такую вещь:
Есть у нас данные в двух столбцах —
92000 95000
91000 90000
Необходимо сделать чтобы в данных ячейках было нахождение разницы в 5000 и шла проверка каждого числа, т.е. 92000 — 95000 ,91000 — 95000 и т.д. потом 91000 — 92000. Такое вообще можно сделать? Пробывал условным фарматированием у меня не вышло
к примеру 95000-90000 = 5000 то ячейки 95000 и 90000 заливались красным цветом.



0



53 / 32 / 13

Регистрация: 03.11.2016

Сообщений: 162

15.09.2017, 06:30

2

А если в каждом столбце по 100 значений, что каждый из каждого вычитать ??

Я предложил бы плясать от максимального и минимального значений.
Все что больше минимального на 5000 закрасить и все что меньше максимального на 5000 тоже закрасить

посмотри во вложении, поиграйся значениями в ячейках G1, G2 и максимальными и минимальными значениями в ячейках a1:b19

правила условного форматирования:

Код

если =(ABS(A1-МАКС($A$1:$B$19))>$G$1) то красит красным
если =(ABS(A1-МИН($A$1:$B$19))>$G$2) то красит синим



0



53 / 32 / 13

Регистрация: 03.11.2016

Сообщений: 162

15.09.2017, 06:37

3

пожалуй вот с такими цифрами в таблице наглядней к примеру ближе, см вложение



0



3 / 4 / 2

Регистрация: 05.04.2011

Сообщений: 179

15.09.2017, 09:11

 [ТС]

4

В твоем примере оставил только две строчки
90000 95000
91000 96000
1 столбец должен был закрасится красным и второй синий так как разница есть в 5000,



0



53 / 32 / 13

Регистрация: 03.11.2016

Сообщений: 162

15.09.2017, 09:16

5

а ясно

Цитата
Сообщение от Keysi
Посмотреть сообщение

1 столбец должен был закрасится красным и второй синий так как разница есть в 5000,

Ясно, с формулами в условном форматировании все плохо ?
Я сделал чтоб закрашивалась если разница более чем в 5000. Поправить не умеешь ?
Вот приложил новый вариант, с условием более или равно.

Цитата
Сообщение от Keysi
Посмотреть сообщение

1 столбец должен был закрасится красным и второй синий так как разница есть в 5000,

Должен был закрасится весь столбец или только та ячейка что отличается на 5000 ??

Цитата
Сообщение от Keysi
Посмотреть сообщение

так как разница есть в 5000

Или жесткое условие, что разница должна составлять только ровно 5000 ? а не 5001 и не 4999 ??



0



3 / 4 / 2

Регистрация: 05.04.2011

Сообщений: 179

15.09.2017, 09:57

 [ТС]

6

Или жесткое условие, что разница должна составлять только ровно 5000 ? а не 5001 и не 4999 ??

там мб 91500 и 93500 что опять же разница 5000, у тебя в последнем примере данные цифры незакрасились, а так да разница в 5000



0



Обход столбца Excel объектом Range

DataBase

Дата: Понедельник, 24.12.2018, 22:14 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Как можно с помощью объекта Range осуществить проход по нужному столбцу до тех пор пока не дойдём до пустой ячейки наподобие вот этого

[vba]

Код

Dim i As Integer
i = 1
Do While (Cells(i, 3) <> «»)
i = i + 1
Loop

[/vba]

Сообщение отредактировал DataBaseПонедельник, 24.12.2018, 23:42

 

Ответить

Alex_ST

Дата: Пятница, 28.12.2018, 14:18 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

А без цикла?
Например, так[vba]

Код

ActiveSheet.Cells(5, 2).End(xlDown).Address     ‘ последняя заполненная ячейка в столбце В, начиная с 5-й строки

[/vba]или так [vba]

Код

ActiveSheet.Cells.SpecialCells(xlLastCell).Address

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

KuklP

Дата: Пятница, 28.12.2018, 16:34 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Alex_ST привет, друже. Леш, маленькая поправка, скорей это будет последняя заполненная ячейка в столбце В, в блоке(areas), в котором находится 5-я ячейка. Т.е. это не обязательно будет последняя заполненная ячейка в столбце В. Ниже могут располагаться еще множество заполненных ячеекблоков, разделяемых пустыми ячейкамиблоками)) Если нужно именно последнюю в столбце В, то надо использовать End(xlUp) от низа столбца.
Мы же не знаем какой вариант нужен автору..


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

 

Ответить

DataBase

Дата: Пятница, 28.12.2018, 18:35 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Алексей всё правильно сделал согласно заданию последняя заполненная ячейка

 

Ответить

Alex_ST

Дата: Суббота, 29.12.2018, 09:27 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Вообще-то существует несколько методов нахождения последней ячейки «одним махом».
У каждого из них есть свои недостатки. Универсального нет.
Для того, чтобы каждый раз не рыться в литературе, форумах и извилинах :) я сделал для себя такую шпаргалку и положил её в Personal, чтобы всегда была под рукой (у меня там создан целый модуль Example с разными ходовыми примерами и решениями, а т.к. все процедуры объявлены Private , то они нигде не «светятся»)
[vba]

Код

Private Sub LAST_CELL()   ‘ последняя ячейка используемого диапазона на листе
‘ http://msoffice.nm.ru/article/lastcell.htm — «Поиск последней заполненной ячейки»
‘ http://www.excel-vba.ru/chto-umeet-excel/kak-opredelit-poslednyuyu-yachejku-na-liste-cherez-vba/ — Как определить последнюю ячейку на листе через VBA?
   Dim sLastAddr$, lLastRow&, iLastCol%
   ‘With Sheets(«Лист1»)
   With ActiveSheet
      ‘МЕТОД 1: определяется последняя ячейка В ЗАДАННОМ СТОЛБЦЕ/СТРОКЕ
      ‘НО игнорируются скрытые строки/столбцы (шириной/высотой, группировкой, фильтром …)
      lLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
      ‘lLastRow = .Cells(.Rows.Count, «A»).End(xlUp).Row
      ‘lLastRow = .Range(«A» & Rows.Count).End(xlUp).Row
      iLastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
      sLastAddr = .Cells(.Rows.Count, 1).End(xlUp).Address
      ‘sLastAddr = .Cells(.Rows.Count, «A»).End(xlUp).Address
      ‘Arr = Range(«A1:A» & Cells(Rows.Count, «C»).End(xlUp).Row).Value

      lLastRow = .Cells(5, 2).End(xlDown).Row     ‘ последняя заполненная ячейка в столбце В, начиная с 5-й строки

      ‘МЕТОД 2: МОЖЕТ СЧИТАТЬ НЕ ВЕРНО в файле, не сохранённом после удаления последней ячейки, _
       а также может учесть пустую, но форматированную ячейку (заливка, границы, УФ, …)
      ‘правильно работает в только что созданном документе, _
       в котором только добавляются данные в строки/столбцы
      lLastRow = .Cells.SpecialCells(xlLastCell).Row
      iLastCol = .Cells.SpecialCells(xlLastCell).Column
      sLastAddr = .Cells.SpecialCells(xlLastCell).Address

      ‘МЕТОД 3: те же недостатки, что и у метода 2… Но т.к. есть обращение к UsedRange, то считает верно!
      lLastRow = .UsedRange.Row + .UsedRange.Rows.Count — 1
      iLastCol = .UsedRange.Column + .UsedRange.Columns.Count — 1
      ‘!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      ‘ Переопределить текущее положение последней ячейки можно просто обратившись к UsedRange:
      With .UsedRange: End With
      ‘или так:
      lLastRow = .UsedRange.Cells.SpecialCells(xlLastCell).Row
      iLastCol = .UsedRange.Cells.SpecialCells(xlLastCell).Column
      sLastAddr = .UsedRange.Cells.SpecialCells(xlLastCell).Address
   End With
End Sub

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Alex_ST

Дата: Суббота, 29.12.2018, 09:37 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

KuklP, привет, Серёга!
Давно я здесь не тусил: на работе завал текучки непрерывный, прав Администратора собаки-сисадмины на работе лишили, и я теперь не только скачивать файлы с макросами не могу, но даже ни кракозябры при копировании кириллицы исправить не могу, ни ActiveX в любимом 2003-ем починить :'( , да и личные и семейные :D телефоны и планшеты на Android’e нужно постоянно «полировать»… Поэтому я теперь в основном в свободное время на 4PDA тусуюсь.
А твоё замечание

Мы же не знаем какой вариант нужен автору..

абсолютно верное. Но каков вопрос, таков и ответ.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STСуббота, 29.12.2018, 09:39

 

Ответить

KuklP

Дата: Суббота, 29.12.2018, 09:41 |
Сообщение № 7

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

Добавь в свою шпаргалку:
[vba]

Код

Set x = Cells.Find(«*», [a1], xlFormulas, 1, 1, 2)

[/vba]предпоследний параметр отвечает — что искать, строку или столбец. yes


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

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Excel протянуть формулу до конца строки
  • Excel протяжка с шагом
  • Excel протягивание ячеек не работает
  • Excel протягивание формулы с изменением шага
  • Excel протоколы для соревнований