Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Оптимизация макроса, Необходимо оптимизировать последовательно выполняемые действия
 
Уважаемые форумчане, прошу вашей помощи!

Есть макрос, работает, как простая последовательность действий. Ранее, когда исходный массив данных и область отображения были идентичны по структуре, то прописать все в одну строку труда не составляло. Но теперь в области отображения данные идут через колонку, а в исходном массиве остались в колонках подряд. Из-за этого в координатах появилось смещение на 1. Как это прописать в макросе с какой-то условной формулой "предыдущие координаты -1" не знаю.
Надеюсь на вашу помощь. Сам макрос ниже. В таком виде файл работает, но медленно. Заранее благодарю!
   
Код
Range("C4").FormulaR1C1 = "=LOOKUP(RC[48],RC[48])"
    Range("C4").AutoFill Destination:=Range("C4:C45"), Type:=xlFillDefault
    
    Range("E4").FormulaR1C1 = "=LOOKUP(RC[47],RC[47])"
    Range("E4").AutoFill Destination:=Range("E4:E45"), Type:=xlFillDefault
    
    Range("G4").FormulaR1C1 = "=LOOKUP(RC[46],RC[46])"
    Range("G4").AutoFill Destination:=Range("G4:G45"), Type:=xlFillDefault
    
    Range("I4").FormulaR1C1 = "=LOOKUP(RC[45],RC[45])"
    Range("I4").AutoFill Destination:=Range("I4:I45"), Type:=xlFillDefault
    
    Range("K4").FormulaR1C1 = "=LOOKUP(RC[44],RC[44])"
    Range("K4").AutoFill Destination:=Range("K4:K45"), Type:=xlFillDefault
    
    Range("M4").FormulaR1C1 = "=LOOKUP(RC[43],RC[43])"
    Range("M4").AutoFill Destination:=Range("M4:M45"), Type:=xlFillDefault
    
    Range("O4").FormulaR1C1 = "=LOOKUP(RC[42],RC[42])"
    Range("O4").AutoFill Destination:=Range("O4:O45"), Type:=xlFillDefault
    
    Range("Q4").FormulaR1C1 = "=LOOKUP(RC[41],RC[41])"
    Range("Q4").AutoFill Destination:=Range("Q4:Q45"), Type:=xlFillDefault
    
    Range("S4").FormulaR1C1 = "=LOOKUP(RC[40],RC[40])"
    Range("S4").AutoFill Destination:=Range("S4:S45"), Type:=xlFillDefault
    
    Range("U4").FormulaR1C1 = "=LOOKUP(RC[39],RC[39])"
    Range("U4").AutoFill Destination:=Range("U4:U45"), Type:=xlFillDefault
    
    Range("U4").FormulaR1C1 = "=LOOKUP(RC[39],RC[39])"
    Range("U4").AutoFill Destination:=Range("U4:U45"), Type:=xlFillDefault
   
    Range("Y4").FormulaR1C1 = "=LOOKUP(R[46]C[26],R[46]C[26])"
    Range("Y4").AutoFill Destination:=Range("Y4:Y45"), Type:=xlFillDefault
    
    Range("AA4").FormulaR1C1 = "=LOOKUP(R[46]C[25],R[46]C[25])"
    Range("AA4").AutoFill Destination:=Range("AA4:AA45"), Type:=xlFillDefault
    
    Range("AC4").FormulaR1C1 = "=LOOKUP(R[46]C[24],R[46]C[24])"
    Range("AC4").AutoFill Destination:=Range("AC4:AC45"), Type:=xlFillDefault
    
    Range("AE4").FormulaR1C1 = "=LOOKUP(R[46]C[23],R[46]C[23])"
    Range("AE4").AutoFill Destination:=Range("AE4:AE45"), Type:=xlFillDefault
    
    Range("AG4").FormulaR1C1 = "=LOOKUP(R[46]C[22],R[46]C[22])"
    Range("AG4").AutoFill Destination:=Range("AG4:AG45"), Type:=xlFillDefault
    
    Range("AI4").FormulaR1C1 = "=LOOKUP(R[46]C[21],R[46]C[21])"
    Range("AI4").AutoFill Destination:=Range("AI4:AI45"), Type:=xlFillDefault
    
    Range("AK4").FormulaR1C1 = "=LOOKUP(R[46]C[20],R[46]C[20])"
    Range("AK4").AutoFill Destination:=Range("AK4:AK45"), Type:=xlFillDefault
    
    Range("AM4").FormulaR1C1 = "=LOOKUP(R[46]C[19],R[46]C[19])"
    Range("AM4").AutoFill Destination:=Range("AM4:AM45"), Type:=xlFillDefault
    
    Range("AO4").FormulaR1C1 = "=LOOKUP(R[46]C[18],R[46]C[18])"
    Range("AO4").AutoFill Destination:=Range("AO4:AO45"), Type:=xlFillDefault
    
    Range("AQ4").FormulaR1C1 = "=LOOKUP(R[46]C[17],R[46]C[17])"
    Range("AQ4").AutoFill Destination:=Range("AQ4:AQ45"), Type:=xlFillDefault

    Range("F4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[46]/R[92]C[46],RC[46]/100)"
    Range("F4").Select
    Selection.Style = "Percent"
    Range("F4").Select
    Selection.AutoFill Destination:=Range("F4:F45"), Type:=xlFillDefault
    Range("F4:F45").Select
    Selection.NumberFormat = "0%"
    Range("F4:F45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("H4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[45]/R[92]C[45],RC[45]/100)"
    Range("H4").Select
    Selection.Style = "Percent"
    Range("H4").Select
    Selection.AutoFill Destination:=Range("H4:H45"), Type:=xlFillDefault
    Range("H4:H45").Select
    Selection.NumberFormat = "0%"
    Range("H4:H45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("J4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[44]/R[92]C[44],RC[44]/100)"
    Range("J4").Select
    Selection.Style = "Percent"
    Range("J4").Select
    Selection.AutoFill Destination:=Range("J4:J45"), Type:=xlFillDefault
    Range("J4:J45").Select
    Selection.NumberFormat = "0%"
    Range("J4:J45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("L4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[43]/R[92]C[43],RC[43]/100)"
    Range("L4").Select
    Selection.Style = "Percent"
    Range("L4").Select
    Selection.AutoFill Destination:=Range("L4:L45"), Type:=xlFillDefault
    Range("L4:L45").Select
    Selection.NumberFormat = "0%"
    Range("L4:L45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("N4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[42]/R[92]C[42],RC[42]/100)"
    Range("N4").Select
    Selection.Style = "Percent"
    Range("N4").Select
    Selection.AutoFill Destination:=Range("N4:N45"), Type:=xlFillDefault
    Range("N4:N45").Select
    Selection.NumberFormat = "0%"
    Range("N4:N45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("P4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[41]/R[92]C[41],RC[41]/100)"
    Range("P4").Select
    Selection.Style = "Percent"
    Range("P4").Select
    Selection.AutoFill Destination:=Range("P4:P45"), Type:=xlFillDefault
    Range("P4:P45").Select
    Selection.NumberFormat = "0%"
    Range("P4:P45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("R4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[40]/R[92]C[40],RC[40]/100)"
    Range("R4").Select
    Selection.Style = "Percent"
    Range("R4").Select
    Selection.AutoFill Destination:=Range("R4:R45"), Type:=xlFillDefault
    Range("R4:R45").Select
    Selection.NumberFormat = "0%"
    Range("R4:R45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("T4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[39]/R[92]C[39],RC[39]/100)"
    Range("T4").Select
    Selection.Style = "Percent"
    Range("T4").Select
    Selection.AutoFill Destination:=Range("T4:T45"), Type:=xlFillDefault
    Range("T4:T45").Select
    Selection.NumberFormat = "0%"
    Range("T4:T45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Range("V4").Select
    ActiveCell.FormulaR1C1 = "=IFERROR(RC[38]/R[92]C[38],RC[38]/100)"
    Range("V4").Select
    Selection.Style = "Percent"
    Range("V4").Select
    Selection.AutoFill Destination:=Range("V4:V45"), Type:=xlFillDefault
    Range("V4:V45").Select
    Selection.NumberFormat = "0%"
    Range("V4:V45").Select
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
         
Изменено: Murlif - 07.10.2022 06:44:11
Очистить макросом диапазон ячеек от содержимого, но так, чтобы прописанные в ячейках правила не удалялись.
 
Коллеги, еще раз здравствуйте. Нужна ваша помощь.

Задача все та же - очистить макросом область ячеек от содержимого, но не удалить правила условного форматирования в ячейках.
Как и писал в закрытой теме:
"Клавиша Delete с этой задачей отлично справляется, но в макросе прописывается, как ClearContents, и когда чищу область макросом - правила тоже удаляются ((
"Clear"/"Value = Empty" - тоже грохают правила в ячейках.
Какой командой можно очистить область и не удалить при этом правила в ячейках? Если кто знает, подскажите пожалуйста."
За файл с паролем прошу пардона. Исправил.

P.S. Не очень понимаю принцип модерации тем, в закрытой теме (https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=132638&...) претензий по оформлению не было. Был вопрос, на который я не успел ответить. Да, на мой взгляд название темы соответствовало задаче. И, как мне кажется, название тем - это краткое, емкое описание задачи. Описание темы - расшивка данной задачи, ожидания автора темы. Текст сообщения - подробное изложение по теме. Либо я чего-то не понимаю, либо темы надо именовать исключительно на вкус модерирующих, но откуда его знать?!
[ Закрыто] Очистить макросом диапазон ячеек от содержимого, но так, чтобы прописанные в ячейках правила не удалялись.
 
Уважаемые форумчане, нужна ваша помощь.

Задача - очистить макросом диапазон ячеек от содержимого, но так, чтобы прописанные в ячейках правила не удалялись.
Клавиша Delete с этой задачей отлично справляется, но в макросе прописывается, как ClearContents, и когда чищу область макросом - правила тоже удаляются ((
"Clear"/"Value = Empty" - тоже грохают правила в ячейках.
Какой командой можно очистить область и не удалить при этом правила в ячейках? Если кто знает, подскажите пожалуйста.  
Как вызвать макрос, выбранный из КомбоБокс на листе?, Нужно добавить несколько макросов в "поле со списком"
 
Добрый день форумчане!
Как обычно, не справившись с задачей самостоятельно, пришел за помощью гуру этого сайта (еще не разу не оставался без помощи :) )
Всегда привязывал макросы к кнопкам, чтобы конечные пользователи могли легко и быстро перестраивать данные внутри листа. Но всегда это было так, один макрос - одна кнопка.
Сейчас есть задача, решение которой мне видится следующим образом: элемент управления формы "поле со списком" в котором 7 позиций для выбора, при выборе каждой из позиций, должен срабатывать разный макрос. Собственно макросы написал, а как их привязать к каждой из 7 строчек в "поле со списком" не знаю.
Это возможно? И если да, то пожалуйста, подскажите как. Поиск юзал, ответ не нашел, но нашел решение для другой задумки, до которой руки еще не дошли.

Заранее благодарю за помощь!  
Перенести данные с 7 листов одной книги на один лист другой книги по указанным диапазонам
 
Уважаемые форумчане.
Заранее извиняюсь, если не нагуглил аналогичный вопрос с готовым решением.

Прошу вашей помощи в решении следующей задачи:
Есть книга эксель, на одном листе которой есть семь диапазонов (таблиц с исходными данными) по которым работают другие макросы.
Каждый день эти семь диапазонов нужно обновлять данными, поставляемыми через специальный софт.
Эти данные выгружаются файлом эксель (у которого всегда одинаковое название + текущая дата) с семью листами название которых всегда одно (для каждого листа) и диапазон данных всегда один (А1:U75).
Чтобы избавиться от монотонного копирования диапазона на каждом листе в соответствующий диапазон рабочего файла и исключить человеческий фактор на этом участке, данную работу хотелось бы автоматизировать.

К сожалению почитав темы по PQ приладить действия форумчан к своей задаче не смог, как и не смог собрать макрос, который мог бы это сделать ибо самоучка и уровень не высок.

Заранее очень признателен за помощь.  
Поиск значений и перенос при сопадении данных
 
Дамы и господа, доброго времени суток!

1) Есть такая задача: нужно значения из столбца А на листе "План закупок" искать в столбце С на листе "Товары" и при обнаружении совпадения, значение соседней слева ячейки в столбце В листа "Товары" переносить в соседнюю от искомого числа ячейку справа в столбце В на листе "План закупок".
2) Для чего это делается: есть план закупок и есть его реализация на листах "Товары", "Услуги". На листы "Товары" и "Услуги" заносятся базовые значения заключенных договоров, а далее в строках разносятся крайние сроки поставки. Строки подсвечиваются Желтым (ожидание поставки), зеленым (поставка в срок), красным (нет поставки/поставка не в срок). Если поставка товара/услуги прошла не в срок, то таблица подсчитывает пеню. При вносе базовых значений заключенных договоров на лист "Товары" должен указываться номер пункта плана, по которому прошла закупка. На этот номер должна реагировать соответствующая строка на листе "План закупок" и тоже подсвечиваться
3) В чем проблема: примененная к решению п 1)  формула в некоторых случаях отрабатывает некорректно. В примере видно, что при указании номеров плана 167, 168 на листе "Товары", в нужных строках на листе "План закупок" появляются верные порядковые цифры. НО, почему-то формула не работает с п.206. Находя его в нужном столбце и определяя значение, на лист "План закупок" формула выносит не верный порядковый номер.
4) Что нужно: Ваша помощь Дамы и Господа!

Проблемный файл в аттаче
Умножение по цвету ячейки, Умножить значение закрашенных ячеек
 
Всем доброго дня.
Нужна помощь в решении следующей задачи:

Есть базовая стоимость в фиксированной ячейке и диапазанон различных критериев (поправочных коэффициентов). Базовую цену нужно последовательно перемножить на коэффициенты, которые пользователь отметит цветом. Т.е. задача чем-то схожа с суммированием цветных ячеек, только здесь их нужно перемножить одну за другой.

Если кто-то с этим сталкивался или знает, как решить задачу, пожалуйста помогите.

Заранее спасибо!  
Количество дней в квартале, Необходимо подсчитать количество дней в квартале за минусом воскресений
 
Всем доброго дня.

Столкнулся с проблемой. У части работников показатель KPI труда напрямую зависит от количества рабочих дней (за минусом воскресений) в квартале перемноженных на объем ежедневно выполняемых работ.

Посчитать такое количество в месяце не проблема, но как это сделать в квартале? Да так, чтобы каждый новый квартал этот плановый показатель обновлялся.

Вывел себе базовые значения "года", "квартала", "месяца", его начала и конца. Но смекнуть, как из всего этого рассчитывать количество дней в текущем квартале не могу.

Может кто уже сталкивался или просто понимает, как это сделать. Буду признателен за помощь!    
Объединение двух формул, Не могу соединить две части формулы.
 
Уважаемые форумчане, нужна ваша помощь.

Написал формулу для работы с таблицей данных, в ней три вероятных исхода: 1) Штраф - при невыполнении определенных условий (дата/количество); 2) Истина - когда все условия выполнены; 3) Дата - когда срок сдачи еще не подошел (будущее).

Штраф работает - закрашивается красным, Истина работает - закрашивается зеленым, а Дата не срабатывает - при вводе данных, верных для этого условия, значение "ДАТА" в ячейке не отражается и ячейка не закрашивается желтым. .

Прошу Вашей помощи в объединении двух частей формулы:

1) ЕСЛИ(ИЛИ(ИЛИ(AE61>AD61; AE63<AD63); ЕПУСТО(AE61);(ЕПУСТО(AE63)); И(AD61<=Сегодня;И(ИЛИ(AE63<AD63;ИЛИ(ЕПУСТО(AE61); ЕПУСТО(AE63)))))); "ШТРАФ")
2) ЕСЛИ(И(ЕПУСТО(AE61); AD61>Сегодня);"ДАТА"; ИЛИ(ЕСЛИ(AE61<=AD61;ИСТИНА)))

Надеюсь на вашу помощь, т.к. сам я гуманитарий и работаю в творческой среде и лишь изредка балуюсь экселем, на вот таком пользовательском уровне.  
Изменено: Murlif - 28.07.2016 14:34:02
Страницы: 1
Наверх