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

Вход

Регистрация

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

 

= Мир MS Excel/Выделить столбец в зависимости от изменяющихся условий - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделить столбец в зависимости от изменяющихся условий (Макросы/Sub)
Выделить столбец в зависимости от изменяющихся условий
китин Дата: Среда, 22.03.2017, 15:06 | Сообщение № 1
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Доброго всем времени суток. Есть задачка, одно из условий которой является выделение одного столбца в зависимости от дня и способа производства. День это СЕГОДНЯ(), способ производства находится в ячейке К9.
К сожалению нет времени научится делать самому, начальство торопит yes
Можно просто Select. Дальше сам попробую додумать
К сообщению приложен файл: 6801582.xlsm (64.7 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеДоброго всем времени суток. Есть задачка, одно из условий которой является выделение одного столбца в зависимости от дня и способа производства. День это СЕГОДНЯ(), способ производства находится в ячейке К9.
К сожалению нет времени научится делать самому, начальство торопит yes
Можно просто Select. Дальше сам попробую додумать

Автор - китин
Дата добавления - 22.03.2017 в 15:06
Karataev Дата: Среда, 22.03.2017, 15:23 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Выделить столбец с помощью макроса не получается - выделяется несколько столбцов из-за объединенных ячеек в строке 5.
Этот макрос выделяет только ячейку в строке 10.


Сообщение отредактировал Karataev - Среда, 22.03.2017, 15:28
 
Ответить
СообщениеВыделить столбец с помощью макроса не получается - выделяется несколько столбцов из-за объединенных ячеек в строке 5.
Этот макрос выделяет только ячейку в строке 10.

Автор - Karataev
Дата добавления - 22.03.2017 в 15:23
_Boroda_ Дата: Среда, 22.03.2017, 15:34 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Игорь, а 29 марта у тебя два лака. Какой выбирать?
И что ты дальше с выделенным столбцом делать хочешь?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИгорь, а 29 марта у тебя два лака. Какой выбирать?
И что ты дальше с выделенным столбцом делать хочешь?

Автор - _Boroda_
Дата добавления - 22.03.2017 в 15:34
китин Дата: Среда, 22.03.2017, 15:34 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Насколько я понял [vba]
Код
arr() = Rows("10:11").Value
[/vba]объявляем массив состоящий из 10 и 11 строки [vba]
Код
For j = 16 To UBound(arr, 2)
[/vba] цикл от 16 до нижней границы массива [vba]
Код
arr()
[/vba]? так?


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


Сообщение отредактировал китин - Среда, 22.03.2017, 15:38
 
Ответить
СообщениеНасколько я понял [vba]
Код
arr() = Rows("10:11").Value
[/vba]объявляем массив состоящий из 10 и 11 строки [vba]
Код
For j = 16 To UBound(arr, 2)
[/vba] цикл от 16 до нижней границы массива [vba]
Код
arr()
[/vba]? так?

Автор - китин
Дата добавления - 22.03.2017 в 15:34
китин Дата: Среда, 22.03.2017, 15:37 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а 29 марта у тебя два лака

а их везде по 2. :D ошибочка. наверное первый


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

а их везде по 2. :D ошибочка. наверное первый

Автор - китин
Дата добавления - 22.03.2017 в 15:37
Karataev Дата: Среда, 22.03.2017, 15:40 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
цикл от 16 до нижней границы массива

Цикл от столбца 16 до последнего столбца, в котором есть данные в строке 10. В Вашем файле последний столбец GA. Вот до него макрос и будет просматривать.
По массиву быстрее двигаться, поэтому макрос двигается не по листу, а по массиву.
 
Ответить
Сообщение
цикл от 16 до нижней границы массива

Цикл от столбца 16 до последнего столбца, в котором есть данные в строке 10. В Вашем файле последний столбец GA. Вот до него макрос и будет просматривать.
По массиву быстрее двигаться, поэтому макрос двигается не по листу, а по массиву.

Автор - Karataev
Дата добавления - 22.03.2017 в 15:40
_Boroda_ Дата: Среда, 22.03.2017, 15:41 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Может, тебе нужно выделить не весь столбец, а толькро внутри таблицы?
Тогда в макросе Олега (самому лень писать, уж если готовый есть) одну строку поменять нужно
[vba]
Код
Sub Найти()
    Dim arr(), lc As Long, j As Long
    Dim criteria1, criteria2
    criteria1 = Date
    criteria2 = Range("K9").Value
    lc = Cells(10, Columns.Count).End(xlToLeft).Column
    arr() = Rows("10:11").Value
    For j = 16 To UBound(arr, 2)
        If arr(1, j) = criteria1 And arr(2, j) = criteria2 Then
            Cells(13, j).Resize(Range("B" & Rows.Count).End(3).Row - 12, 1).Select'<<<Вот эту строку
            Exit For
        End If
    Next j
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожет, тебе нужно выделить не весь столбец, а толькро внутри таблицы?
Тогда в макросе Олега (самому лень писать, уж если готовый есть) одну строку поменять нужно
[vba]
Код
Sub Найти()
    Dim arr(), lc As Long, j As Long
    Dim criteria1, criteria2
    criteria1 = Date
    criteria2 = Range("K9").Value
    lc = Cells(10, Columns.Count).End(xlToLeft).Column
    arr() = Rows("10:11").Value
    For j = 16 To UBound(arr, 2)
        If arr(1, j) = criteria1 And arr(2, j) = criteria2 Then
            Cells(13, j).Resize(Range("B" & Rows.Count).End(3).Row - 12, 1).Select'<<<Вот эту строку
            Exit For
        End If
    Next j
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 22.03.2017 в 15:41
Karataev Дата: Среда, 22.03.2017, 15:46 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
_Boroda_, я в пост 2 внес изменения в этом месте:
[vba]
Код
arr() =
[/vba]
 
Ответить
Сообщение_Boroda_, я в пост 2 внес изменения в этом месте:
[vba]
Код
arr() =
[/vba]

Автор - Karataev
Дата добавления - 22.03.2017 в 15:46
_Boroda_ Дата: Среда, 22.03.2017, 15:50 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
я в пост 2 внес изменения

Точно. А я, конечно же, не заметил.
Но неважно. Нужно только одну строку поменять. Я ее пометил в макросе.
А может и не нужно. Мы ж так и не выяснили, что Игорь хочет потом делать.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
я в пост 2 внес изменения

Точно. А я, конечно же, не заметил.
Но неважно. Нужно только одну строку поменять. Я ее пометил в макросе.
А может и не нужно. Мы ж так и не выяснили, что Игорь хочет потом делать.

Автор - _Boroda_
Дата добавления - 22.03.2017 в 15:50
китин Дата: Среда, 22.03.2017, 15:52 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
спасибо вам. я тоже малость переделал код Олега Karataev, под выделение внутри таблицы( прошу прощения за неточность)


только вот почему не дает объявить массив, ограниченный опр. рамками? вот такой
[vba]
Код
arr() = Rows("P10:GA11").Value
[/vba]

понял не Rows а Range


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


Сообщение отредактировал китин - Среда, 22.03.2017, 15:58
 
Ответить
Сообщениеспасибо вам. я тоже малость переделал код Олега Karataev, под выделение внутри таблицы( прошу прощения за неточность)


только вот почему не дает объявить массив, ограниченный опр. рамками? вот такой
[vba]
Код
arr() = Rows("P10:GA11").Value
[/vba]

понял не Rows а Range

Автор - китин
Дата добавления - 22.03.2017 в 15:52
китин Дата: Среда, 22.03.2017, 15:55 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Игорь хочет потом делать.

второй вопрос.далее мне надо все данные из этого столбца перенести в завтрашний( сложив эти данные с данными столбца из завтра) попробую сам наваять :D


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Игорь хочет потом делать.

второй вопрос.далее мне надо все данные из этого столбца перенести в завтрашний( сложив эти данные с данными столбца из завтра) попробую сам наваять :D

Автор - китин
Дата добавления - 22.03.2017 в 15:55
Karataev Дата: Среда, 22.03.2017, 15:57 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
китин, Вы используете не ту версию моего макроса. Я внес изменения в макрос в посте 2.
В этой версии в массив arr помещаются строки не циликом, а с первого столбца по последний, в котором есть данные в строке 10.
Не вижу смысла его переделывать, т.к. так даже удобнее искать проблемы, если будут, т.к. будет соответствие между листом и массивом.


Что касается Вашего вопроса, то нужно записать так (вместо Rows Range):
[vba]
Код
rr() = Range("P10:GA11").Value
[/vba]
Но в этом случае надо начинать j не с 16, а с 1.
И нужно еще здесь корректировать j:
[vba]
Код
Cells(10, j+15).Select
[/vba]


Сообщение отредактировал Karataev - Среда, 22.03.2017, 16:05
 
Ответить
Сообщениекитин, Вы используете не ту версию моего макроса. Я внес изменения в макрос в посте 2.
В этой версии в массив arr помещаются строки не циликом, а с первого столбца по последний, в котором есть данные в строке 10.
Не вижу смысла его переделывать, т.к. так даже удобнее искать проблемы, если будут, т.к. будет соответствие между листом и массивом.


Что касается Вашего вопроса, то нужно записать так (вместо Rows Range):
[vba]
Код
rr() = Range("P10:GA11").Value
[/vba]
Но в этом случае надо начинать j не с 16, а с 1.
И нужно еще здесь корректировать j:
[vba]
Код
Cells(10, j+15).Select
[/vba]

Автор - Karataev
Дата добавления - 22.03.2017 в 15:57
китин Дата: Среда, 22.03.2017, 16:01 | Сообщение № 13
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Олег мне нужен был пинок, я его получил. спасибо .Самому никак не удавалось присвоить переменным значения СЕГОДНЯ() и ячейки К9. Теперь есть два варианта


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеОлег мне нужен был пинок, я его получил. спасибо .Самому никак не удавалось присвоить переменным значения СЕГОДНЯ() и ячейки К9. Теперь есть два варианта

Автор - китин
Дата добавления - 22.03.2017 в 16:01
Karataev Дата: Среда, 22.03.2017, 16:08 | Сообщение № 14
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
китин, вариант по Вашим вопросам:
 
Ответить
Сообщениекитин, вариант по Вашим вопросам:

Автор - Karataev
Дата добавления - 22.03.2017 в 16:08
китин Дата: Четверг, 23.03.2017, 14:15 | Сообщение № 15
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
ну вот, с вашей помощью наваял какое то подобие макроса. :D у меня работает. критика приветствуется и ожидается
К сообщению приложен файл: __2.xlsm (68.3 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениену вот, с вашей помощью наваял какое то подобие макроса. :D у меня работает. критика приветствуется и ожидается

Автор - китин
Дата добавления - 23.03.2017 в 14:15
_Boroda_ Дата: Четверг, 23.03.2017, 14:57 | Сообщение № 16
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Игорь, да ты ваще молодец! Я тобой горжусь!

критика приветствуется и ожидается
Не критика, а комментарии. Я прямо в макросе написал
К сообщению приложен файл: _2-1-1.xlsm (65.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИгорь, да ты ваще молодец! Я тобой горжусь!

критика приветствуется и ожидается
Не критика, а комментарии. Я прямо в макросе написал

Автор - _Boroda_
Дата добавления - 23.03.2017 в 14:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделить столбец в зависимости от изменяющихся условий (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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