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

Страницы: 1
Макрос для упрощения формул, Есть ли такой?
 
Всем привет.
Теоретический вопрос: существует ли макрос, позволяющий упрощать формулы?
Например, у меня есть сочетание index-match или любое другое, которое в заданном диапазоне возвращает значение одной ячейки, соответствующее заданным параметрам. Можно ли сделать макрос, который бы возвращал имя этой ячейки?
Т.е. все сложные формулы, которые возвращают результат ячейки или диапазона, максимально упростить, чтобы конечному пользователю было легче понять смысл.
И если такое нельзя сделать (гугл ничего не выдает), то в чем сложность?
Заранее спасибо
Расчет значений, основываясь на выборе из двух таблиц данных
 
Всем привет.
Просьба посмотреть файл, может, у кого будет хорошее решение.
Есть две таблицы (условно говоря, состав смеси/ее тип, и сколько этой смеси потребляют по месяцам). Нужно рассчитать объем потребления компонентов, входящих в состав смеси.
Прямой расчет (ячейки с серой заливкой) коряво выглядит, и не будет работать, если, например, одна из таблиц дополнится.
Я пробовал решать через формулы массива типа СЧЕТЕСЛИ (=SUM((COUNTIF(B16:B18;B4:B12)*C4:C12)*C16:C18), но, во-первых, не могу понятно, как убрать нули из результата (например, привести 0,1,0,0,2,0,3 в 1,2,3: пробовал через small т.п.), во-вторых, если в таб.2 порядок меняется, то вся логика нарушается.
Буду благодарен за любую помощь.
Спасибо.
Макрос для дублирования каждой строки таблицы определенное количество раз (с нумерацией)., записан через авторекордер и изменен., работает некорректно
 
UPD добавлено подробное название и описание темы
Всем привет.
Не могу понять, почему немного модернизированный макрос работает некорректно (5 строчек кода), прошу помощи.
Задача: каждую строку таблицы продублировать 12 раз, в первом столбце пронумеровать соответственно (1-12).
Записал первую строку авторекордером, подкорректировал - все работает. Задал диапазоны (один в один) - почему-то автозаполнение вставляет 24 строки вместо 12...
Отладка процедур обработки событий
 
Здравствуйте всем.
Хочу вот какой вопрос уточнить: когда используешь private sub на листе (например, selectionchange), и его вроде как нельзя проверить пошагово (через f8). Поэтому я в private sub пишу указание на макрос, который нужно запустить, а сам макрос пишу в модулях (у там уже нормально пошагово выполнение проверяю).
Но такой подход периодически какие-то подвисания дает, от которые только закрытие экселя помогает.
Подскажите, можно ли так делать, или я что-то не догоняю?
Спасибо.
Фильтровать сводную таблицу по значению активной ячейки
 
Привет всем.
Что-то не могу в интернете найти такую вроде простую вещь:
необходимо фильтровать сводную таблицу на основании выбранной ячейки (activecell). Никак не могу понять, как это реализовать на практике.
Код
pt.PivotFields(имя).CurrentPage = "имя" ' - работает
pt.PivotFields(имя).CurrentPage = activecell ' - не работает

Подскажите, пожалуйста, как это можно реализовать.
Перенос формулы массива в VBA, (или какой-то другой способ для решения задачи)
 
Привет всем.
Написал формулу, которая ищет первое значение в диапазоне, которое отличается от первого значения ячейки диапазона
={ПОИСКПОЗ(1;--($B$17:$B$63<>$B$17);0)}
(например, 4 4 4 4 4 4 2 3 5 4 4 4 4 4,  даст позицию 7)

Хочу эту логику в VBA перенести, но не знаю, как:
Код
WorksheetFunction.Match(1, --(Range2 <> ActiveCell.Offset(0, -2)), 0)

(это вариант совсем не работает)

Подскажите, пожалуйста, как это можно сделать? Спасибо заранее.

ПС если по сути задачи, мне нужно в VBA получить диапазон от первого значения до последнего одинакового. Первое значение диапазона по activecell находится, ни могу понять, как найти последнее.
ППС пробовал *1 вместо --, тоже без успеха.
Изменено: Евгений - 20.02.2018 16:34:46
Не могу воспроизвести формулу indirect при создании UDF
 

Код
Function UOM(x As Double, y As Double) As Double
UOM = "=INDIRECT(x) * INDIRECT(y)"
End Function

на листе у меня прекрасно работает формула =indirect(x)*indirect(y)
хочу поменять ее на udf типа =UOM(x,y), но не могу понять, как...
буду благодарен за помощь
Сортировать последний столбец динамичной таблицы
 
Народ, помогите, плиз.
Данная тема вполне себе работает
Код
Sub asf()
ActiveSheet.Range("h8:h37").Sort Key1:=Range("h8:h37").Cells(1), _
Order1:=xlDescending, Type:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
End Sub
Однако когда пытаюсь написать вот в таком виде, выдает ошибку
Код
Sub test()
'Dim qwe1 As Range, qwe2 As Range, qwe3 As Range
Set qwe1 = ActiveSheet.Range("b7:k7").Find("Total", lookat:=xlPart)
Set qwe2 = qwe1.Offset(1, 0)
Set qwe3 = Range(Cells(qwe2.Row, qwe2.Column), Cells(qwe2.Row + 29, qwe2.Column))
ActiveSheet.Range("qwe3").Sort Key1:=Range("qwe3").Cells(1), _
Order1:=xlDescending, Type:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
End Sub
Блин, что не так делаю?

UPD извиняюсь, что файл не прикладываю, он рабочий. А вопроизвести его муторно: таблица, которую я сортирую, сводная, и я пытаюсь сделать сортировку по столбцу итого (там нельзя сделать autosort, потому что в поле values очень много величин... в общем, есть причины)).
Изменено: Евгений - 11.09.2016 01:25:56
Изменить значение макс ОУ для графика с помощью VBA, Как сделать изменение maximumscale без активизации графика?
 
Привет всем.
Чет я туплю, помогите. Почему работает
Код
ActiveSheet.ChartObjects("Chart1").Activate
ActiveChart.Axes(xlValue).MaximumScale = 10
И не хочет работать
Код
ActiveSheet.ChartObjects("Chart1").Axes(xlValue).MaximumScale = 10
Типа у chartobject нет свойства axes? Но вариации ниже тоже не подходят
Код
Charts("Chart1").Axes(xlValue).MaximumScale = 10
В общем, как сделать изменение maximumscale без активизации графика?
Спасибо заранее.
ищу программиста VBA .Net Visual Studio на долгий проект, VSTO .Net
 
Привет всем.
Нужен человек, умеющий создавать офисные приложения для Excel (VSTO), т.н. COM add-in, с использованием Visual Studio и .Net, плюс, разумеется, VBA.
Основные задачи: создание кастомных task panes (боковые области задач) для управления контентом рабочей книги, разработка кастомной ленты (ribbon bar) и различных userforms.
Один из примеров возможной упрощенной задачи в приложении.
Как пример рабочих форм - сайт www.ablebits.com Разница в том, что их приложения VSTO Add-ins, мне же нужен Document-level customization.
Наверное, опыт работы в add-in-express будет преимуществом, но это уж больно специфичное приложение, поэтому необязательно.
Детали готов рассказать уже непосредственно подходящему человеку. Проект долгий, поэтому человек нужен надолго, плюс потом поддержка продукта тоже нужна.
Оплата - как договоримся. Вариантов много)
Если кто знает подходящих людей - буду благодарен за контакты.
ПС мог что-то перепутать/исказить в терминологии, надеюсь, общий смысл понятен.
mouse scroll event для окна, ищу решение для прокрутки окна мышью
 
Всем привет.
Тут случайно выяснил, что у VBA вроде нет такого события, как скроллинг колесиком мышки.
Для примера: у меня есть вот такой код
Код
[a30] = ActiveWindow.VisibleRange.Row
Показывает номер верхней строки, но работает только при смене выбора. Соответственно, хотелось бы, чтобы это также работало при скроллинге. Но что-то в интернете ничего такого найти не смог (все scroll events относятся к формам). Единственно, что нашел, находится вот здесь. Но это было написано давно.
Меня мучает вопрос - неужели даже в 2013 офисе так ничего на эту тему не появилось?
Управление контентом userform, с помощью другого контента этой же userform
 
Всем привет.
Есть теоретический вопрос о возможности реализации одной идеи (см.картинку)
Правая часть userform, которая сделана через multipage, должна полностью меняться при выборе различных нодов в treeview. Т.е. в теории, если я выбираю подпункт "участок1", который находится в разделе "перевозка", вся multipage должна будет поменяться на другие вкладки, которые, соответственно, будут по другому заполнены.
Возможно ли это, и если да, то буду благодарен за краткое пояснение (ну или ссылку хорошую).
Спасибо заранее.
Изменено: Евгений - 20.07.2015 09:17:11
selectionchange работает со второго раза
 
Народ, помогите, плиз.
Написал такой простой код

Код
Private Sub worksheet_selectionchange(ByVal target As Range)
If Not Application.Intersect(ActiveCell, [c9]) Is Nothing Then
If [c9] = "all" Then
Range("10:100").EntireRow.Hidden = False
Else
Range("10:100").EntireRow.Hidden = True
    For RowCnt = 10 To 100
        If Cells(RowCnt, 9).Value = [c9] Then
            Cells(RowCnt, 9).EntireRow.Hidden = False
        End If
    Next RowCnt
   
End If
End If
End Sub
 
в ячейке с9 у меня выпадающий список (дата/список). Почему-то код работает только со второго раза (т.е. первый раз я выбираю нужное значение, выбираю другую ячейку, потом снова выбираю с9 - код работает.
Подскажите, чего добавить?
создание массива данных в памяти и работа с ним, диапазон данных в памяти эксель и возможность с ним работать
 
Доброго времени.
Мне по работе надо сделать упрощенный вариант анализа Монте-Карло, когда делается какое-то количество итераций вычислений, где переменные меняются в определенных диапазонах, и итоговый вариант вычисления образует массив данных, предположим, из 1000 значений. Потом по этом значениям можно строить распределение и прочие статистические штуки.
В чем вопрос? Последний раз я делал это давно, делал через простейший for... next, и все данные собирались в одном месте на листе (соответственно, столбец из 1000 цифр). Возник вопрос: можно ли сохранить весь полученный диапазон где-нибудь в памяти экселя, назвать его, и работать уже с этим именем как с массивом, содержащим те самые 1000 чисел распределения?
Спасибо заранее
(пример выкладывать не буду, оригинал большой и непонятный, на словах вроде все хорошо объясняется). Но если надо, сделаю, только скажите)
оффтоп: требуется репетитор по VBA Excel
 
Всем привет.  
По работе периодически всплывает необходимость что-то на VBA сделать в экселевских модельках, и каждый раз это занимает столько сил и времени, что уже достало. Я тут подумал, к нам на работу приходят репетиторы по языкам, народ с ними занимается, почему бы мне не попробовать найти репетитора по VBA.  
Смотрел по поиску на форуме, вот народ обучение он-лайн предлагает по скайпу, в принципе, как вариант, тоже можно рассмотреть.  
Если есть люди, которые способны обучить VBA с почти нуля до среднего уровня - пожалуйста, шлите мне на почту свои координаты, расценки, а также способ обучения.  
ealevashev at mail dot ru (вроде по правилам форума разрешено оставлять адрес своей почты).  
ПС для Educated Fool - у вас форма на сайте не работает, http://excelvba.ru/order (404)  
ППС вариант "заходить вечером на сайт и пытаться задачки другим решать" - ну, во-первых, за местными не угонишься)), во-вторых - времени капец как немного...
goalseek и solver (код VBA)
 
Всем доброго утра.  
Давно тут не был, тут все такой же веселый и дружный народ?))  
У меня вопрос есть по теме, буду благодарен премного, если кто просто ответит (ничего решать не нужно)))  
Главный вопрос): в общем, когда использую goakseek, он не может найти значение. В то же время solver отлично его ищет, если ограничить значения в ячейке (условно, задавая диапазон от 0 до 1). Есть ли возможность при использовании goalseek как-то ограничить диапазон поиска? (пробовал ограничить через "проверка данных" для конкретных ячеек - не работает). В стандартном функционале такого не нашел.  
Неглавный вопрос: откуда возник предыдущий вопрос?) мне нужно несколько раз сделать подбор параметра, что я и делаю через for... next, но solver каждый раз выдает всплывающее окно, которое мешает. Можно как-нибудь это окошко деактивировать?
подсвечивание ячейки при событии mouse over
 
Всем доброго времени.  
Не нашел почему-то здесь такую тему(  
Вопрос: как сделать так, чтобы при проведении курсора на диапазоном ячеек та ячейка, над которой в данный момент находится курсор, была подсвечена?  
(на данный момент в примере подсвечивается ячейка при событии SelectionChange, а как сделать Mouseover, чего-то в и-нете не нахожу. Но где-то видел, что такое возможно).
округление значения
 
Народ, всем доброго дня.  
нужен добрый совет: эксель в результате сложения нескольких замороченных формул должен выдавать результат 0, а выдает что-то типа: -0,000000000000143. В результате следующая формула воспринимает значение этой ячейки как <0, а должно быть =0. Я не могу все последующие формулы переписать на ОКРУГЛ, это слишком много времени займет. Если ли какой другой вариант округления?  
Хорошо было бы, если бы в пользовательском формате ячейки можно было прописать что-то типа # ##0;округл(# ##0;3)
Обход пароля защиты страницы
 
Рискую нарваться на грубость)), т.к эта тема уже много раз тут обсуждалась. Но вдруг данный аспект в ней еще не затрагивался (поиском не нашел).  
В общем, есть такой несложный код (ниже). Удивительно хорошо работает (по-крайней мере, то, что нужно было, освободил от защиты). Но никак не могу понять, как он работает. Опишите кто-нибудь, плиз.  
 
ПС смотрел, что пишет макрорекордер - никакого намека на пароль.  
ПС1 ссылка откуда взял http://spreadsheetpage.com/index.php/tip/spreadsheet_protection_faq1/#P1  
 
Sub PasswordBreaker()  
   'Author unknown  
   'Breaks worksheet password protection.  
   Dim i As Integer, j As Integer, k As Integer  
   Dim l As Integer, m As Integer, n As Integer  
   Dim i1 As Integer, i2 As Integer, i3 As Integer  
   Dim i4 As Integer, i5 As Integer, i6 As Integer  
   On Error Resume Next  
   For i = 65 To 66: For j = 65 To 66: For k = 65 To 66  
   For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66  
   For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66  
   For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126  
   ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _  
       Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _  
       Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)  
   If ActiveSheet.ProtectContents = False Then  
       MsgBox "One usable password is " & Chr(i) & Chr(j) & _  
           Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _  
           Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)  
        Exit Sub  
   End If  
   Next: Next: Next: Next: Next: Next  
   Next: Next: Next: Next: Next: Next  
End Sub
Goalseek, нюансы
 
Всем доброго времени.  
Использую в модели обычный подбор параметра.  
  Worksheets("Sheet1").Cells(x, y).GoalSeek _  
  Goal:=Worksheets("Sheet1").Cells(x, y), _  
  Changingcell:=Worksheets("Sheet1").Cells(x, y)  
Но иногда получается так, что некоторые значения не могут быть найдены. На выходе пишет невероятные значения.  
В связи с этим вопрос: как задать лимит значений для Changingcell?  
Типа, меняем эту ячейку только в заданных пределах (условно, от 0 до 5), и если не получается найти значение, то оставляем значение по умолчанию (1).  
Спасибо заранее.  
ПС: прошу прощения за невыложенный файл, он большой и рабочий(
worksheets().range(???)
 
Дорогие товарищи, есть вопрос.  
Мне надо задать диапазон worksheets("sheet1").range(Х:Х), где Х - это номер строки, на которой находится ячейка (ActiveCell.Row).  
Т.е. нахожусь я на ячейчка А10, мне надо, чтобы диапазон был worksheets("sheet1").range(10:10)  
Помогите, плс.
Всплывающий календарь
 
Доброго дня всем.  
Взял тему из "приемов" (всплывающий календарь), но так как у меня на работе Виста и 2007, календарь, соответственно, не пошел(в папку system32 доступа нет). Слегка переделал это дело, вроде, работает, хоть и примитивно.  
Два вопроса.  
1. Можно ли сделать так, чтобы ячейки для внесения дат (начало и конец) активировались только при клике на них мышкой? (т.е.если выделение ячейки происходит перемещением стрелками, то календарь не всплывает)  
2. Как бы сделать так, чтобы в календаре (под месяцами) в выделенные цветом ячейки можно было цифры вписывать, а в невыделенные - нельзя?  
Во вложении файл, excel97-2003, 70кБ ))  
Ну, и спасибо огроменное, если что...)
Пример от Уокенбаха
 
Хотел спросить, как делается подобная фишка. (смотрим пример, внимания на ошибки не обращаем).  
Лист Stats, массив b10:k70. Выделяем в нем ячейку, делаем scroll down, смотрим на названия столбцов. Когда первая строка столбца скрывается, названия столбцов меняются.  
Вопрос - как это делается?  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
ошибка на сайте
 
Народ, прошу прощения, вроде где-то видел уже эту тему, но у меня ничего кроме общего списка тем не открывает (раньше открывало, а теперь нет). В чем проблема?  
 
Technical Information (for support personnel)  
   * Error Code: 500 Internal Server Error. The size of the response header is too large. Contact your ISA Server administrator. (12216)  
   * IP Address: 79.174.64.68  
   * Date: 25.08.2010 7:20:19 [GMT]
   * Server: mskar-px04.armz.ru  
   * Source: proxy
Удаление стилей ячеек
 
Такой очередной вопрос, мучающий меня временами))  
Стили ячеек можно удалять, но только по одной. Я тут себе в книгу понавставлял листов с каким-то невообразимым количеством пользовательских стилей. Можно ли удалять несколько стилей одновременно, и как это делать?  
На работе тут один сказал, что это делать невозможно, но решил спросить для верности у знатоков.
Окно контрольного значения
 
Всем доброго дня. Один вопрос (даже не задача)):  
в excel_2007 есть такая полезная функция, "окно контрольного значения", только уж больно она ограничена по функционалу. Мне было бы идеально, чтобы в таком окошке можно было экселевскую таблицу просмаривать. Никто не встречал ранее какие-нибудь решения на данную тему?  
И спасибо, конечно, заранее)
Страницы: 1
Наверх