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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск первой пустой ячейки в строке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск первой пустой ячейки в строке (Макросы/Sub)
Поиск первой пустой ячейки в строке
Re:Я Дата: Пятница, 24.06.2016, 14:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Второй день не могу найти подходящую тему на форуме. Прошу помощи.
Задача - вставить в действующий макрос (ВПР, так назову) еще один макрос, который ищет на Листе БМП в 3-й строке первую не пустую ячейку.
Смысл такой. Поступил заказ от клиента, кладу его в Лист заказ БМП. ВПРю. Поступает следующий заказ. "ИЩУ ПУСТУЮ ЯЧЕЙКУ в 3-й строке на Листе БМП и вновь вставляю значение заказа.
И если не сложно, то бонусом, подтянуть наименование клиента.
Заранее БЛАГОДАРЮ.
К сообщению приложен файл: 1282540.xlsm (54.2 Kb)
 
Ответить
СообщениеДобрый день.
Второй день не могу найти подходящую тему на форуме. Прошу помощи.
Задача - вставить в действующий макрос (ВПР, так назову) еще один макрос, который ищет на Листе БМП в 3-й строке первую не пустую ячейку.
Смысл такой. Поступил заказ от клиента, кладу его в Лист заказ БМП. ВПРю. Поступает следующий заказ. "ИЩУ ПУСТУЮ ЯЧЕЙКУ в 3-й строке на Листе БМП и вновь вставляю значение заказа.
И если не сложно, то бонусом, подтянуть наименование клиента.
Заранее БЛАГОДАРЮ.

Автор - Re:Я
Дата добавления - 24.06.2016 в 14:49
китин Дата: Пятница, 24.06.2016, 14:51 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеКак определить первую заполненную ячейку на листе?

Автор - китин
Дата добавления - 24.06.2016 в 14:51
Re:Я Дата: Пятница, 24.06.2016, 15:23 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
китин:
Посмотрел.....и не понял. Мне наверняка вот это подойдет.
[vba]
Код
lLastRow = Cells(Rows.Count,2).End(xlUp).Row
[/vba]
Но как ее интегрировать в "мой" макрос? Что бы нашел первую пустую и начал ВПРить?
 
Ответить
Сообщениекитин:
Посмотрел.....и не понял. Мне наверняка вот это подойдет.
[vba]
Код
lLastRow = Cells(Rows.Count,2).End(xlUp).Row
[/vba]
Но как ее интегрировать в "мой" макрос? Что бы нашел первую пустую и начал ВПРить?

Автор - Re:Я
Дата добавления - 24.06.2016 в 15:23
китин Дата: Пятница, 24.06.2016, 15:45 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а это ждите макрописцев


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа это ждите макрописцев

Автор - китин
Дата добавления - 24.06.2016 в 15:45
Udik Дата: Пятница, 24.06.2016, 15:59 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Без привязки к макросу
[vba]
Код


Public Sub test()
Dim rng1 As Range

With ActiveSheet
Set rng1 = .Range("A3:O3").Find("") 'замените на свой  диапазон
'Debug.Print rng1.Address
End With
End Sub

[/vba]
К сообщению приложен файл: 0t.xlsm (19.1 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеБез привязки к макросу
[vba]
Код


Public Sub test()
Dim rng1 As Range

With ActiveSheet
Set rng1 = .Range("A3:O3").Find("") 'замените на свой  диапазон
'Debug.Print rng1.Address
End With
End Sub

[/vba]

Автор - Udik
Дата добавления - 24.06.2016 в 15:59
_Boroda_ Дата: Пятница, 24.06.2016, 18:47 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Мне наверняка вот это подойдет.
lLastRow = Cells(Rows.Count,2).End(xlUp).Row

Не, это ищет последнюю заполненную СТРОКУ в столбце 2, а Вам нужно последний заполненный СТОЛБЕЦ в строке 3 (кстати, вопрос - Вам нужно первую пустую или последнюю? - это разные вещи)
Вот так можно найти последнюю
[vba]
Код
c1_ = Cells(3, Columns.Count).End(xlToLeft).Column + 1
[/vba]
а вот так первую
[vba]
Код
Range("B3").End(xlToRight).column
[/vba]
А по поводу
как ее интегрировать в "мой" макрос?
- что-то я макроса
действующий макрос (ВПР, так назову)
в Вашем файле не обнаружил.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Мне наверняка вот это подойдет.
lLastRow = Cells(Rows.Count,2).End(xlUp).Row

Не, это ищет последнюю заполненную СТРОКУ в столбце 2, а Вам нужно последний заполненный СТОЛБЕЦ в строке 3 (кстати, вопрос - Вам нужно первую пустую или последнюю? - это разные вещи)
Вот так можно найти последнюю
[vba]
Код
c1_ = Cells(3, Columns.Count).End(xlToLeft).Column + 1
[/vba]
а вот так первую
[vba]
Код
Range("B3").End(xlToRight).column
[/vba]
А по поводу
как ее интегрировать в "мой" макрос?
- что-то я макроса
действующий макрос (ВПР, так назову)
в Вашем файле не обнаружил.

Автор - _Boroda_
Дата добавления - 24.06.2016 в 18:47
Re:Я Дата: Понедельник, 27.06.2016, 10:43 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_ - Вы как всегда меня выручаете. Благодарю.
Теперь по макросу Вашему. Мне надо найти именно ПЕРВУЮ. Вопрос почему ищем с ячейки В3? В третье строке могут быть пустые ячейки в поле сводной таблицы. Мне туду ни чего не надо вставлять. А вот строка два всегда будет в раках сводной таблицы заполнена и за пределами таблицы мне и надо найти ячейку первую пустую и вставить туда значение макровса ВПР.
М.б. мне заново положить файл с примером? Хотя сейчас его скачал и он там есть по номером 7. На всякий случай выложу сам макрос. И суть всего действия такова. Найти первую пустую ячейку в строке 2 и следом запустить макрос ВПР.( так его назвал) И если возможно, бонусом, что бы не создавать новую тему, привязать НАЗВАНИЕ клиента. В данном примере: Нашел первую пустую ячейку К2. Вставил название клиента из ЛИСТА ЗАКАЗ БМП С4 (постоянная, всегда там будет название клиента), и вставить значение из ВПР. Вот. Если это конечно не сильно нарушает ПРАВИЛА.
Сам макрос ВПР, к которому надо все привязать.
[vba]
Код
Sub Макрос7()
    Dim a, b, c, d, e, iLastrow As Long, i As Long, ii As Long
   
    '1. данные в два массива
    With Лист2    'используется кодовое имя
        iLastrow = .Cells(Rows.Count, 3).End(xlUp).Row
        a = Range(.[c3], .Range("C" & iLastrow)).Value
    End With

    With Лист3    'используется кодовое имя
        iLastrow = .Cells(Rows.Count, 1).End(xlUp).Row
        b = Range(.[k19], .Range("C" & iLastrow)).Value
    End With

    '2.пустой массив для результата
    ReDim c(1 To UBound(a), 1 To 9)

    With CreateObject("Scripting.Dictionary")
    
        '3.в словарь уникальные и номер строки из массива
        For i = 1 To UBound(b)
            .Item(b(i, 1)) = i
        Next

        '4.по словарю из массива b в массив c
        For i = 1 To UBound(a)
            If .exists(a(i, 1)) Then
                c(i, 1) = b(.Item(a(i, 1)), 9)
            End If
        Next
    End With

    '5. выгрузка всего массива
    With Лист2    'используется кодовое имя
        .[K3].Resize(UBound(c), 1) = c
        .Activate
    End With
End Sub
[/vba]
 
Ответить
Сообщение_Boroda_ - Вы как всегда меня выручаете. Благодарю.
Теперь по макросу Вашему. Мне надо найти именно ПЕРВУЮ. Вопрос почему ищем с ячейки В3? В третье строке могут быть пустые ячейки в поле сводной таблицы. Мне туду ни чего не надо вставлять. А вот строка два всегда будет в раках сводной таблицы заполнена и за пределами таблицы мне и надо найти ячейку первую пустую и вставить туда значение макровса ВПР.
М.б. мне заново положить файл с примером? Хотя сейчас его скачал и он там есть по номером 7. На всякий случай выложу сам макрос. И суть всего действия такова. Найти первую пустую ячейку в строке 2 и следом запустить макрос ВПР.( так его назвал) И если возможно, бонусом, что бы не создавать новую тему, привязать НАЗВАНИЕ клиента. В данном примере: Нашел первую пустую ячейку К2. Вставил название клиента из ЛИСТА ЗАКАЗ БМП С4 (постоянная, всегда там будет название клиента), и вставить значение из ВПР. Вот. Если это конечно не сильно нарушает ПРАВИЛА.
Сам макрос ВПР, к которому надо все привязать.
[vba]
Код
Sub Макрос7()
    Dim a, b, c, d, e, iLastrow As Long, i As Long, ii As Long
   
    '1. данные в два массива
    With Лист2    'используется кодовое имя
        iLastrow = .Cells(Rows.Count, 3).End(xlUp).Row
        a = Range(.[c3], .Range("C" & iLastrow)).Value
    End With

    With Лист3    'используется кодовое имя
        iLastrow = .Cells(Rows.Count, 1).End(xlUp).Row
        b = Range(.[k19], .Range("C" & iLastrow)).Value
    End With

    '2.пустой массив для результата
    ReDim c(1 To UBound(a), 1 To 9)

    With CreateObject("Scripting.Dictionary")
    
        '3.в словарь уникальные и номер строки из массива
        For i = 1 To UBound(b)
            .Item(b(i, 1)) = i
        Next

        '4.по словарю из массива b в массив c
        For i = 1 To UBound(a)
            If .exists(a(i, 1)) Then
                c(i, 1) = b(.Item(a(i, 1)), 9)
            End If
        Next
    End With

    '5. выгрузка всего массива
    With Лист2    'используется кодовое имя
        .[K3].Resize(UBound(c), 1) = c
        .Activate
    End With
End Sub
[/vba]

Автор - Re:Я
Дата добавления - 27.06.2016 в 10:43
Re:Я Дата: Понедельник, 27.06.2016, 11:07 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ай-яй.... сам напортачил. Сам же просид 3-ю. теперь задаю вопрос почему 3-ю... Прошу прощения. Исправляюсь. во 2-й строке.
 
Ответить
Сообщениеай-яй.... сам напортачил. Сам же просид 3-ю. теперь задаю вопрос почему 3-ю... Прошу прощения. Исправляюсь. во 2-й строке.

Автор - Re:Я
Дата добавления - 27.06.2016 в 11:07
Re:Я Дата: Вторник, 05.07.2016, 09:50 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
С Вашего позволения ап...
Прошу помощи.
 
Ответить
СообщениеС Вашего позволения ап...
Прошу помощи.

Автор - Re:Я
Дата добавления - 05.07.2016 в 09:50
китин Дата: Вторник, 05.07.2016, 10:03 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Рискну ответить.в качестве предположения,может неправильно. А что если попробовать исправить вот тут
[vba]
Код
iLastrow = .Cells(Rows.Count, 3).End(xlUp).Row
        a = Range(.[c3], .Range("C" & iLastrow)).Value
[/vba]
3 на 2 (обе тройки)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Вторник, 05.07.2016, 10:03
 
Ответить
СообщениеРискну ответить.в качестве предположения,может неправильно. А что если попробовать исправить вот тут
[vba]
Код
iLastrow = .Cells(Rows.Count, 3).End(xlUp).Row
        a = Range(.[c3], .Range("C" & iLastrow)).Value
[/vba]
3 на 2 (обе тройки)

Автор - китин
Дата добавления - 05.07.2016 в 10:03
Re:Я Дата: Вторник, 05.07.2016, 10:20 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
китин - благодарю за ответ.
саму малость понимаю в макросах. 3 на 2 это не проблема для меня. Проблема это как внедрить поиск первой пустой строки в мой макрос? _Boroda_ - написал, что не видит в примере макроса. Это для меня не большое удивление. Почему его не видно в примере. Я его, макрос. выложил отдельно.
Сама процедура. 1. Поиск первой пустой строки в "2" 2. ВПРить и вставлять со К3 значения . (это все работает как положено) Так же с помощью _Boroda_ доделал его. Тема в другой ветке была.
[moder]Тема продублирована во ФРИЛАНСе. Эту закрываю[/moder]


Сообщение отредактировал Pelena - Вторник, 05.07.2016, 14:02
 
Ответить
Сообщениекитин - благодарю за ответ.
саму малость понимаю в макросах. 3 на 2 это не проблема для меня. Проблема это как внедрить поиск первой пустой строки в мой макрос? _Boroda_ - написал, что не видит в примере макроса. Это для меня не большое удивление. Почему его не видно в примере. Я его, макрос. выложил отдельно.
Сама процедура. 1. Поиск первой пустой строки в "2" 2. ВПРить и вставлять со К3 значения . (это все работает как положено) Так же с помощью _Boroda_ доделал его. Тема в другой ветке была.
[moder]Тема продублирована во ФРИЛАНСе. Эту закрываю[/moder]

Автор - Re:Я
Дата добавления - 05.07.2016 в 10:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск первой пустой ячейки в строке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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