Уважаемые гуру форума, помогите с решением задачи. В таблице на листе "товарный отчет" происходит выборка данных способом, описанном в приемах данного форума ("Многоразовый ВПР" по формуле массива: =ЕСЛИОШИБКА(ИНДЕКС(Запчасти!$B$3:$B$20;НАИМЕНЬШИЙ(ЕСЛИ($C$5=Запчасти!$A$3:$A$20;СТРОКА(Запчасти!$B$3:$B$20)-2;"" ;СТРОКА()-53));"" и все бы хорошо, но требуется, что бы при повторении позиций (в данном случае номера 24-44ОЕ) эта самая позиция показывалась только один раз, а цифры по повторяющимся позициям оказались бы сложенными, т.е. в данном случае не 4950, 2050, 2490 тремя строками, а 9490 одной строкой. Как это сделать? Заранее спасибо всем откликнувшимся.
Уважаемые гуру, проконсультируйте с небольшой проблемой. На лист вводятся данные через форму, количество через вводится с использованием ImputBox, вот соответствующая часть кода: ActiveCell.Offset(0, 5) = InputBox("Сколько записать?") ActiveCell.Offset(1).Activate Все бы хорошо, но если вводится дробное число, то оно во-первых выравнивается в соответствующей ячейке по левому краю (а не по правому, как задано), а во-вторых, что более важно, введенное число не участвует в расчетах (не вычитается). Если после этого войти в эту ячейку и нажать enter, введеное число и выравняется как надо и посчитается правильно. При всем этом, если число целое, все отрабатывается как надо сразу. Что мне надо изменить в коде (пытался определить формат InputBox, формат изменился, проблема - нет.) Заранее спасибо всем откликнувшимся.
Уважаемые гуру. Подскажите, можно ли решить данную проблемку. Имеется лист с остатками товара и хотелось бы иметь на каждой страницы постраничный итог, а уж совсем хорошо, если бы этот постраничный итог печатался бы не в ячейке (как сейчас), а в колонтитуле (на форуме была похожая тема о печати каких-либо результатов в колонтитулах). Я предполагал использовать для расчетов функцию СЧЕТЕСЛИМН, но она требует, скажем так, "контрольных ячеек" и вот эти самые ячейки я бы и хотел вычислить. На просторах сети я нашел макрос:
Public Sub PageNumner() Dim VPB As Excel.VPageBreak Dim HPB As Excel.HPageBreak Dim intVPBC As Integer Dim intHPPC As Integer Dim lngPage As Long
lngPage = 1
If ActiveSheet.PageSetup.Order = xlDownThenOver Then intHPPC = ActiveSheet.HPageBreaks.Count + 1 intVPBC = 1 Else intVPBC = ActiveSheet.VPageBreaks.Count + 1 intHPPC = 1 End If
For Each VPB In ActiveSheet.VPageBreaks If VPB.Location.Column > ActiveCell.Column Then Exit For End If
lngPage = lngPage + intHPPC Next VPB
For Each HPB In ActiveSheet.HPageBreaks If HPB.Location.Row > ActiveCell.Row Then Exit For End If
lngPage = lngPage + intVPBC Next HPB
MsgBox "Номер страницы активной ячейки = " & lngPage End Sub
который правильно и корректно вычисляет номер страницы активной ячейки. MsgBox с сообщением мне не нужен, а вот как если мне подсказали как присвоить диапазону I10:I39 (в примере) значения вычисленные вышеописаной функцией, все было бы замечательно. Сейчас значения "контрольных ячеек" забиты вручную и на 2-3 страницы это несложно, но если бы таких страниц было 100 или 500, неужели бы этот момент нельзя было бы решить по иному? Говоря покороче, как помощью макроса, который будет включаться по какому-либо событию или каким-либо "постоянным" образом через VBA или формулами (устроит любой способ) получать значения "контрольных ячеек", в данном примере диапазона I10:I39? Заранее большое спасибо всем откликнувшимся.
Уважаемые гуру, очень прошу помочь с написанием макроса. Необходимо в макросе выделить диапазон (для дальнейшей сортировки по дате) по последней заполненной ячейке столбце D. Сложность (для меня) в том что ниже этого диапазона (образовавшегося в результате работы другого макроса) после какого-то количества пустых строк, находятся заполненные ячейки и найденный мною в сети макрос: Sub Copy_To_Last_Cell() Range("B1:D" & Cells(Rows.Count, 1).End(xlUp).Row).Select End Sub
выделяет диапазон B1:D12, а мне нужно чтобы выделялся диапазон B1:D3. Как это сделать? Заранее спасибо всем откликнувшимся.
Уважаемые гуру, подскажите как усовершенствовать возможности макроса. Ситуация следующая: на UserForm имеется combobox со списком месяцев, при выборе значения из этого combobox срабатывает небольшой макрос найденный мною на просторах интернета: Sub Search() Dim ИскомыйТекст As String, НайденныйТекст As Range, Массив As String ИскомыйТекст = UserForm1.ComboBox1 Массив = "J3:L530" Set НайденныйТекст = Range(Массив).Find(ИскомыйТекст) If Not НайденныйТекст Is Nothing Then НайденныйТекст.Select End Sub который перемещает активную ячейку в "заголовок" выбранного месяца. Все работает как надо, но вот захотел немного усовершенствовать. Дело в том, что на листе есть не только названия месяцев, но и даты в формате ДД.ММ. и хотелось бы иметь возможность перейти на конкретный день года. Так вот, если на UserForm добавить еще 1 combobox в котором можно будет выбрать числа (от 1 до 31) можно было бы (как мне кажется) сделать это. Вопрос: я так понимаю, что сначала нужно будет передать "сцепленные" значения combobox-ов в какой-либо другой объект (listbox, textbox, не знаю что из них лучше подходит), скорректировав и формат (ведь изначально он будет типа "27 января", а для поиска нужен "27.01." (почему-то, когда я пробую проверить поиск через Ctrl + F, соглашается искать только, если и дата для поиска и дата в колонке записаны в текстовом формате), а уж потом передать откорректированный текст в макрос для отработки. Правильно ли я предполагаю алгоритм выполнения задачи и, самое главное, как это сделать? Заранее спасибо всем откликнувшимся.
Уважаемые гуру, подскажите как решить небольшую задачу. В документе имеются скрытые столбцы (D:F) в них находится некая информация. С помощью темы "Пометка элементов списка флажками (checkbox)" (http://planetaexcel.ru/techniques/3/61/) найденной на этом уважаемом ресурсе я могу "отмечать" нужные мне строки. Вопрос таков: как перенести в listbox или textbox (я не знаю что из них лучше подходит для этой ситуации), находящихся на UserForm (вызов правой клавишей мыши) диапазон (в данном случае D4:E10) с возможностью аналогичным способом "простановки" этих самых галочек в UserForm или иного варианта пометок, но ОБЯЗАТЕЛЬНО с появлением этих самых пометок в соответствующих строках на листе, так как по ним (по отметкам) будет производиться отбор данных. Вариант с простым отображением скрытых строк подходит не совсем, так как в документа большое кол-во столбцов, могущих при различных условиях быть и скрытыми и открытыми, а после выполнения пометок хотелось бы возвращения к первоначальному варианту отображения столбцов без дополнительных манипуляций. Заранее спасибо всем откликнувшимся.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Rows("89:400" ) .EntireRow.Hidden = True
If Not Intersect(Target, Range("B89" ) ) Is Nothing Then
If Target.Value = 0 Then
Rows("89:127" ) .EntireRow.Hidden = True
Else
Rows("89:127" ) .EntireRow.Hidden = False
End If
End If
If Not Intersect(Target, Range("B128" ) ) Is Nothing Then
If Target.Value = 0 Then
Rows("89:166" ) .EntireRow.Hidden = True
Else
Rows("89:166" ) .EntireRow.Hidden = False
End If
End If
End If
Application.ScreenUpdating = True
End Sub
условий подобных If Not Intersect(Target, Range("B89" ) ) Is Nothing Then If Target.Value = 0 Then Rows("89:127" ) .EntireRow.Hidden = True Else Rows("89:127" ) .EntireRow.Hidden = False End If End If у меня не 2, а 8 и, я так понимаю, что данный вариант кода очень далеко не оптимален, ведь их могло бы быть и 80 или еще больше. Как оптимизировать данную часть кода? И еще, как в подобном коде (задача там полностью аналогична, при заполнении ячеек должны отображаться/скрываться определенные строки), на этой же странице указать "проверочную" ячейку не как: If Not Intersect(Target, Range("B128" ) ) Is Nothing Then а на ДРУГОМ листе данного файла . Заранее спасибо всем откликнувшимся
Уважаемые гуру, помогите решить проблему. Вроде бы не раз и не два применял в фалах функцию ВПР, а вот сейчас никак не могу понять в чем дело. Ситуация такая: ВПР находит по значению ячейки (дата) искомые данные в таблице на другом листе, ну и далее как положено... Во время заполнения всех данных в окне функции все идет нормально, правильный ответ высвечиватся в "Значение", но как только я нажимаю ОК как вместо правильного ответа появлятся сообщение об ошибке #ЗНАЧ! Почему так происходит понять никак не могу. Заранее спасибо всем откликнувшимся
Уважаемые гуру, можно ли решить данную проблему? На листе справка по расходу запчастей формулой массива {ЕСЛИОШИБКА(ИНДЕКС('Расход запчастей'!B3:B1001;НАИМЕНЬШИЙ(ЕСЛИ(ТЕКСТ($C$6;"[$-F419]ММММ;@")=ТЕКСТ('Расход запчастей'!A3:A1001;"[$-F419]ММММ;@");СТРОКА('Расход запчастей'!B3:B1001)-2;"");СТРОКА()-14));"")} происходит выборка данных. Можно ли усовершентсвовать ее, чтобы при выборке не только месяца, а и гос. номера машины данные выбирались уже по двум признакам, и т.д., НО при этом формула должна работать и без этих дополнительных "фильтров", т.е. если есть желание и необходимость у пользователя, "фильтры" ставятся, нет - не ставятся. В 1С нечто подобное видел. Просто по 2 и более условиям я данные смог бы отобрать, но такова формула не хочет работать, если эти самые условия не выставлены.
Уважаемые гуру, помогите решить небольшую (для Вас конечно) проблему. В коде: Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) If ListBox1.ListCount = 0 Then Cancel = True ActiveCell = ListBox1.Value End Sub
данные выбранные из ListBox1 попадают в активнную ячейку, а вот что надо дописать, чтобы ПОСЛЕ ЭТОГО фокус ячейки сместился скажем на n столбцов вправо и в эту выбранную ячейку можно было бы сразу ввести данные (если я правильно понял это назывется "модально")? А совсем замечательно было бы, если бы после этого самого ввода данных фокус перместился бы под искомую активную ячейку для дальнейшего выбора из ListBox1 (это уж конечно была бы вишенка на торте). Заранее спасибо всем откликнувшимся.
Уважаемые знатоки Excel. Помогите решить небольшой вопрос. Немного страшная формула :) =СУММПРОИЗВ($H$9:$H$39;'Цены ГСМ'!$C$3:$C$33)+СУММПРОИЗВ($I$9:$I$39;ЕСЛИ($W$6="АИ-98";'Цены ГСМ'!$D$3:$D$33;ЕСЛИ($W$6="АИ-95";'Цены ГСМ'!$E$3:$E$33;ЕСЛИ($W$6="АИ-92";'Цены ГСМ'!$F$3:$F$33;ЕСЛИ($W$6="АИ-80";'Цены ГСМ'!$G$3:$G$33;ЕСЛИ($W$6="Д/т";'Цены ГСМ'!$H$3:$H$33;""))))))
вычисляет стоимость горючего. И если первый множитель ($H$9:$H$39;'Цены ГСМ'!$C$3:$C$33) ссылаеся на фиксированный столбец справочного листа, то вот второй множитель отягощен 5 вариантами функции ЕСЛИ. Вопрос вот в чем: номер столбца в котором следует искать диапазон ячеек (на листе Цены ГСМ) я могу вычислить, а вот подставить этот самый номер в формулу, т.е. вместо $D$ - 4, $E$ -5 и т.д., никак не получается. Формула конечно и так работает, но как мне кажется далеко не в идеальном виде, да и к тому же на каждый из 12 месяцев приходится прописывать свой яседиапазон ручками. Можно ли решить эту проблему? Кусок книги (формула в ячейке Н41) прилагается. Заранее спасибо всем откликнувшимся.
В выбранном диапазоне предполагается проверка ячеек (срабатывает формула, данные вводятся, если не срабатывает, то сообщение о невозможности) с помощью стандартных средств offica. Но данная проверка срабатывает только, если данные вводятся непосредственно с клавиатуры, а при использовании варианта Combobox, описанному в теме "Удобный поиск в выпадающем списке" проверка не срабатывает, причем, если повторно зайти в данную ячейку в конец выбранного текста и нажать Enter (как бы повторно введя данные), то проверка срабатывает как ей положено, не давая ввести текст. Уважаемые гуру Excel, можно ли и как (если можно) исправить эту ситуацию?