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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 10:44   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Подстановка в диапазон недостающих данных

Добрый день, уважаемые форумчане!
Вот такая задачка: после обработки данных на листе в столбце D получается каждый раз различное количество заполненных ячеек по строкам. Бывает и 5, и 12, и 27. Каким образом дозаполнить строки в этом диапазоне определенным текстовым значением (скажем Водка или Коньяк, праздником навеяло) до первого кратного 10. К примеру, если 5, то до 10 включительно, если 12, то до 20 включительно и т.д. Главное, чтобы не больше ячейки первой кратной десяти.
Заранее спасибо!
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 11:07   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

попробуйте
Код:
Sub ert()
Dim lr&, i&
lr = Cells(Rows.Count, 4).End(xlUp).Row
i = lr Mod 10
If i > 0 Then Cells(lr + 1, 4).Resize(10 - i).Value = "пыво"
End Sub
nilem вне форума Ответить с цитированием
Старый 02.05.2012, 11:32   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Спасибо, работает. Правда я не написал, что по столбцу D данные получаются путем сцепления ячеек столбцов A и B и формула протянута до 100 строки. Поэтому макрос не воспринимал реально последнюю заполненную ячейку правильно. Проблема решена путем копипаста значений в соседний столбец и перенастройки макроса на столбец E.
Еще раз спасибо.
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 11:52   #4
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Задачка немного усложнилась. Как подработать код, чтобы присваивалось не одно значение "пыво" по поочередно со значением "водка"?
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 12:18   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от strannick Посмотреть сообщение
... "пыво" по поочередно со значением "водка"?
... это зло (сегодня как-то по-особенному это понимаешь)
Пробуем так
Код:
Sub ert()
Dim lr&, i&
lr = Cells(Rows.Count, 5).End(xlUp).Row    'ст. Е
i = lr Mod 10
If i > 0 Then
    Cells(lr + 1, 5).Value = "чай с лимоном"
    If i < 9 Then Cells(lr + 2, 5).Value = "мин. вода"
    If i < 8 Then
        With Cells(lr + 1, 5)
            .Resize(2).AutoFill Destination:=.Resize(10 - i), Type:=xlFillSeries
        End With
    End If
End If
End Sub
nilem вне форума Ответить с цитированием
Старый 02.05.2012, 12:27   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Минералка с чаем подошла как нельзя лучше. Все путем. Спасибо!!!!!!!!!
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 13:33   #7
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Рано обрадовался. Все-таки вылезла проблема с определением последней заполненной ячейки в столбце. Повторюсь, в столбце D данные образуются путем сцепления ячеек из столбцов A и B. Формула СЦЕПИТЬ протянута вниз до строки 100 (с запасом). Выше писал, что проблему обошел путем копипаста (спецвставкой) значений в столбец E. НО, копировал я вручную только видимый образовавшийся диапазон данных (сколько ячеек получилось заполненных, столько и скопипастил). Так макрос работает. Если же копипастить целым столбцом, то макрос определяет, что вплоть до строки 100 ячейки не пустые. Что-то я не въеду, а что же туда при таком варианте копируется, что ячейки определяются как НЕ ПУСТЫЕ?
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 13:54   #8
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Последний раз Для столбца Д
Код:
Sub ert()
Dim lr&, i&
Do
    i = i + 1
Loop While Len(Cells(i, 4)) 'ст. D
lr = i: i = lr Mod 10
If i > 0 Then
    Cells(lr, 4).Value = "чай с лимоном"
    If i < 9 Then Cells(lr + 1, 4).Value = "мин. вода"
    If i < 8 Then
        With Cells(lr, 4)
            .Resize(2).AutoFill Destination:=.Resize(11 - i), Type:=xlFillSeries
        End With
    End If
End If
End Sub
nilem вне форума Ответить с цитированием
Старый 02.05.2012, 14:12   #9
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Уважаемый nilem!
Спасибо за помощь. Но блин и так тоже не работает. Вставка идет начинал со 101 строки, хоть ты тресни. )))))
strannick вне форума Ответить с цитированием
Старый 02.05.2012, 14:44   #10
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Тогда давайте пример в файле с Вашими данными, формулами и чаем.
nilem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подстановка данных в формулу и запись расчета в таблицу Eve555 Microsoft Office Excel 5 19.01.2012 16:44
Создание хитрой БД(подстановка данных из 3-х таблиц в одну) zarapyan Microsoft Office Access 5 28.12.2011 16:11
копирование недостающих данных nickrasov Microsoft Office Excel 1 29.07.2011 16:38
Подстановка данных из разных книг по 3-ем условиям hromovea Microsoft Office Excel 4 12.09.2009 12:38
Выборка и подстановка данных. HIC БД в Delphi 10 10.09.2009 11:34