Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2020, 20:39   #1
RoDaMa
Пользователь
 
Регистрация: 16.03.2020
Сообщений: 24
Вопрос как внутри формулы указать последную строку

приветствую
есть 2 задачи которые не могу решить
1. вставка переменную адрес ячейки в формулу:

Код:
Selection.FormatConditions(1).StopIfTrue = False
    Range("I4").Select 
    Range(Selection, Selection.End(xlDown)).Select
    Range("I4:I1200").Select
в котором xlDown= число последней строки в колонке I.
она постоянно разная
и поэтому ест необходимость указать внутри формулы так
Range("I4:I & xlDown").Select

но выходить ошибка, пробовал обявлять переменную лонгом и вставит внутри формулы, не помогло
блогадарю за помощь


2. необходимо выбрать коллонну начиная с строки 4 до конца коллонны *
сделать условие если значение<=90, then
копировать всю строку на следующую страницу
и так циклом все коллонну
потом обробатываем следующую коллонну
сделать условие если значение>=88, then
копировать всю строку на следующую страницу
и так циклом все коллонну

PS:не программист, код с рекордера
знаю объем болшой, буду блогадарен любой помощи и гиперссылки

Роман

Последний раз редактировалось RoDaMa; 16.03.2020 в 22:04.
RoDaMa вне форума Ответить с цитированием
Старый 16.03.2020, 21:33   #2
RoDaMa
Пользователь
 
Регистрация: 16.03.2020
Сообщений: 24
По умолчанию

Цитата:
Сообщение от RoDaMa Посмотреть сообщение
Selection.FormatConditions(1).StopI fTrue = False
Range("I4").Select
Range(Selection, Selection.End(xlDown)).Select
Range("I4:I1200").Select

Код:
Dim LastRow As Long 'указал переменную
LastRow = Cells(Rows.Count, 4).End(xlUp).Row 'LastRow = последный номер строки
=VLOOKUP(R4C3:R1201C3,Main!R[-2]C[1]:R[213096]C[3],3,0
'вставляю LastRow в формулу =VLOOKUP(R4C3:R & LastRow & C3,Main!R[-2]C[1]:R[213096]C[3],3,0

=VLOOKUP(R4C3:R & LastRow & C3,Main!R[-2]C[1]:R[213096]C[3],3,0
запускаю макрос
Vba автоматом переделывает формулу =VLOOKUP($C$4:4:4 &LastRow& $C:$C,Main!C2:E213100,3,0) и выводит значение =0
Вложения
Тип файла: xlsx Книга1.xlsx (9.8 Кб, 0 просмотров)

Последний раз редактировалось RoDaMa; 16.03.2020 в 22:05. Причина: кодировка изменилься, вместо букв каракули
RoDaMa вне форума Ответить с цитированием
Старый 10.05.2020, 20:03   #3
RoDaMa
Пользователь
 
Регистрация: 16.03.2020
Сообщений: 24
По умолчанию

Спасибо решил
оказываеться неправильно указывал в формуле, переменные значение необходимо в ковычках и если он среплен с еще каким значением то знаком склеивание &
Код:
Dim LastRow As Long 'указал переменную

LastRow = Cells(Rows.Count, 4).End(xlUp).Row 'LastRow = последный номер строки

=VLOOKUP(R4C3:R" & LastRow & "C3,Main!R[-2]C[1]:R[213096]C[3],3,0
RoDaMa вне форума Ответить с цитированием
Старый 11.05.2020, 22:15   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от RoDaMa Посмотреть сообщение
переменные значение необходимо в ковычках
- ровно наоборот: всё, кроме этих переменных в кавычках!
Покажите реально работающий кусок кода.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.05.2020, 09:16   #5
RoDaMa
Пользователь
 
Регистрация: 16.03.2020
Сообщений: 24
По умолчанию

День добрый
я код чут чут изменил, для удобства добавил переменные LastRow, XRw, XLast, XRWlast


Код:
Sub VLOKuP


'
Dim LastRow As Long, XRw As Long, XLast As Long, XRWlast As Long
'обявление переменных
Sheets("Result").Select  'переход в лист Result 
    Range("C4").Select  'выбор ячейки С4 в листе Result 
       LastRow = Cells(Rows.Count, 5).End(xlUp).Row 'определение в листе Result последную не пустую строку
       XLast = LastRow - 1 'в последней строке у нас суммы таблицы, он нам не нужен, поэтому -1 строка
    Sheets("Report").Select ' переходим в лист Report 
    Range("d1").Select 'выбираем нужную нам столбец
       XRw = Cells(Rows.Count, 5).End(xlUp).Row 'находим самую нижную строку
    
'отключение обновление монитора
Application.ScreenUpdating = True


Sheets("Result").Select  ' переходим в лист Result
    Range("B4").Select  ' выбираем ячейку, где необходимо формулу писат
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R3C3:R" & XLast & "C[1],Report!R3C4:R" & XRw & "C4,1,1)" 'здесь XLast= последняя строка-1 в листе Result, XRw=последняя строка в столбце D в странице Report
   
     Columns("B:B").EntireColumn.AutoFit 'выравнивание ширины столбец B по значению
    '
    Range("A4:B4").Select
    Selection.AutoFill Destination:=Range("A4:B" & XLast & "") 'применение формулы в ячейках A4 и B4 до B- XLast, где XLast последняя строка
    Columns("A:A").EntireColumn.AutoFit 'выравнивание ширины столбец А по значению

MsgBox "VlookUps дайын " & Application.UserName 'вывод сообщения о готовности с обращением к пользователю
End Sub
Спасибо форуму, многое познаю

Последний раз редактировалось RoDaMa; 19.05.2020 в 09:09. Причина: исправил код
RoDaMa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указать тип товара (используя формулы по информации с листа Прайс) можно разными способами ЕКАТЕРИНАЗАХ Помощь студентам 4 21.08.2019 09:57
Можно ли параметры компиляции для GCC указать внутри исходника на си. Ароха Помощь студентам 0 22.10.2015 00:07
Указать строку в таблице roxy7 БД в Delphi 2 31.01.2013 22:04
Debug - как заставить Delphi точно указать на строку кода вызывающую ошибку? delphicoding Общие вопросы Delphi 16 30.07.2011 10:47
Помогите найти последную запись Reskov Microsoft Office Access 2 18.12.2008 11:42