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

Страницы: 1 2 3 4 5 След.
Помогите с формулой массивов
 
оо, спасибо! так и думал что забыл про какую-то довольно обычную функцию :)  
 
а ответы это я ручками с калькулятора списывал, поэтому мог ошибиться, все верно вроде
Помогите с формулой массивов
 
"Если кто-то знает как сделать в несколько шагов через промежуточную таблицу или как-то что-то добавить к таблицам Odds и Events, то это всё можно сделать."  
 
имею ввиду такие предложения тоже будут полезны, я могу поменять модель данных как нужно
Помогите с формулой массивов
 
Всем привет  
 
Сижу уже 2й день над формулой для оранжевой таблицы в аттаче.  
В зеленой таблице правильные ответы.  
 
Нужно выбрать все значения в таблице Odds такие, у которых название = "левый столбец"&"значения из таблицы Events меньше процента в верхней строке"  
 
Т.е.    
для пересечения b и 25% нужно взять среднее по ba и bb (99% и 50%)  
для пересечения c и 100% нужно взять среднее по ca cb cc cd (97% 93% 50% 11%)  
 
Если кто-то знает как сделать в несколько шагов через промежуточную таблицу или как-то что-то добавить к таблицам Odds и Events, то это всё можно сделать.  
 
Пожалуйста добавляйте в аттач файл с формулой, потом что я плохо понимаю формулы на русском, а у большинства на этом форуме как я понимаю русский эксель :)  
 
Реальная таблица 200х200, и комбинаций в odds больше 25000, поэтому руками я это не посчитаю :(  
 
Спасибо
несколько вхождений условию If (VBA)
 
После then в строку можно писать только одно выражение.    
Если в If используется else надо писать всё на новой строке.  
 
Имхо лучше взять в привычку, что в 1 строку можно писать только что-то типа  
if a = b then c = 5  
 
Всё что сложнее лучше переносить :)
Как средствами VBA расширить именованный диапазон.
 
Возможно это лучше подойдет:  
 
Dim a As Name  
Set a = ThisWorkbook.Names("Benefits")  
Set a.RefersToRange = a.RefersToRange.Resize(10,20)  
 
Где a.RefersToRange - то куда ссылается имя до начала выполнения кода изменяется на новый диапазон на 10 рядов и 20 столбцов шире.
Как искоренить из документа Excel макрос
 
В каждый лист в Alt-F11 надо ткнуть и посмотреть есть ли там код.
Функция сравнения. Выбор близжайшего большего
 
наверно не самое оптимальное, но :)  
=IF((C1-INDEX(A1:A5,MATCH(C1,A1:A5,1)))>(INDEX(A1:A5,MATCH(C1,A1:A5,1)+1)-C1),INDEX(A1:A5,MATCH(C1,A1:A5,1)+1),INDEX(A1:A5,MATCH(C1,A1:A5,1)))  
 
где A1:A5 - массив чисел, отсортированный по возрастанию, C1 - ячейка с числом.  
 
Но вроде в хелпе видел где-то функцию, которая сама может посчитать.
Событие VBA при пересчете формул.
 
мда, я тупак :)  
 
Изменил на  
   On Error Resume Next  
   ActiveSheet.Unprotect "password"  
   Application.ScreenUpdating = False  
   Application.EnableEvents = False  
       ShowAllData  
       Range("T1").AutoFilter field:=1, Criteria1:=True  
   Application.EnableEvents = True  
   ActiveSheet.Protect Password:="password", DrawingObjects:=True, Contents:=True, Scenarios:=True  
   Application.ScreenUpdating = True  
 
и заработало, хотя когда делал    
   On Error Resume Next  
   Application.EnableEvents = False  
   ActiveSheet.Unprotect "123"  
   Application.ScreenUpdating = False  
       ShowAllData  
       Range("T1").AutoFilter field:=1, Criteria1:=True  
   ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True  
   Application.EnableEvents = True  
   Application.ScreenUpdating = True  
 
не работало
Событие VBA при пересчете формул.
 
Привет всем,  
 
Возникла следующая проблема:  
На листе есть контролы CheckBox с панели Control Toolbox, у них есть LinkedCell, который соответственно меняется на TRUE/FALSE. В зависимости от TRUE/FALSE пересчитывается ещё с десяток формул от каждого контрола. Надо как-то вызывать код VBA после такого пересчета.  
 
Private Sub Worksheet_Calculate() не подходит, т.к. он выполняется столько раз, сколько ячеек с формулами на листе.  
Код заключается в применении фильтра на столбец, состоящий из true/false, чтобы скрыть ненужную информацию. 500 раз применить фильтр выглядит криво и впринципе нелогично.  
 
Ранее решал эту проблему с помощью Validation полей и соответственно эвента Worksheet_change. Оно работало один раз как надо, но пользователям захотелось ставить галочки вместо выбора да/нет из списка Validation.  
 
Подскажите как можно как-то обойти эти ограничения.  
 
Код ниже:  
Private Sub Worksheet_Calculate()  
   On Error Resume Next  
   ActiveSheet.Unprotect "password"  
   Application.ScreenUpdating = False  
       ShowAllData  
       Range("T1").AutoFilter field:=1, Criteria1:=True  
   ActiveSheet.Protect Password:="password", DrawingObjects:=True, Contents:=True, Scenarios:=True  
   Application.ScreenUpdating = True  
End Sub
HELP!!! Как найти 1500 номеров в списке из 18000 номеров?
 
{quote}{login=слэн}{date=28.01.2009 02:43}{thema=Re: }{post}{quote}{login=Prog}{date=28.01.2009 01:41}{thema=}{post}Вот так не пойдет?  
В автофильтре выбрать custom - does not equal #N/A  
 
Не знаю как это по-русски, но что-то типа "другой...", "не равно", №Н/Д.  
 
Отфильтровано и показано будет то, что нам надо удалить.{/post}{/quote}  
 
не равно чему? списку из 1500 тел?{/post}{/quote}  
 
Ну если протянуть на 18к ячеек, там где #N/A - этих ячеек нет в списке из 1500 номеров, там где что-либо другое - этот номер есть в списке из 1500 номеров. Не знаю скоко оно будет думать 18000*1500, но всё же, если одноразово вполне вариант.
Как посмотреть-вывести все значения свойств форматирования ячейки?
 
В хелпе найти border, interior, font и посмотреть их properties. Это то, что может поменяться.  
Либо создать    
dim a as border  
a.  
после . высветиться список пропертей.
HELP!!! Как найти 1500 номеров в списке из 18000 номеров?
 
Вот так не пойдет?  
В автофильтре выбрать custom - does not equal #N/A  
 
Не знаю как это по-русски, но что-то типа "другой...", "не равно", №Н/Д.  
 
Отфильтровано и показано будет то, что нам надо удалить.
Суммесли по вхождению в текст.
 
=SUMIF(F13:F15,"=*" & H12 & "*",E13:E15)
как автоматизировать создание нового файла
 
Dim wb As Workbook, wsTemp As Worksheet, ws As Worksheet, thisWs As Worksheet  
   Set thisWs = ActiveSheet  
   Dim i As Integer  
   i = Application.SheetsInNewWorkbook  
   Application.SheetsInNewWorkbook = 1  
   Application.ScreenUpdating = False  
   Application.DisplayAlerts = False  
   Set wb = Workbooks.Add  
   Set wsTemp = wb.Worksheets(1)  
   thisWs.Cells.Copy  
   Set ws = wb.Worksheets.Add  
   ws.Range("A1").PasteSpecial xlPasteAll  
   Application.CutCopyMode = False  
   wsTemp.Delete  
   wb.SaveAs "otchet.xls"  
   Application.DisplayAlerts = True  
   Application.ScreenUpdating = True  
   Application.SheetsInNewWorkbook = i  
 
 
Вместо otchet.xls введите ваше имя файла, не оч. понятно откуда взять дату на которую сформирован отчет.
Почему не запускается функция Z_real в основном коде???
 
суровая функция.
Как создать TOTAL в конце таблицы?
 
Можно ещё Data-List-Create list и там Toggle Total Row.  
 
Если эксель2003
Помогите исправить ошибку Excel
 
Поставьте в формате показывать цифр 5 после запятой и увидите что эксель считает правильно.
Логические функции в Excel
 
В одну ячейку все фамилии через пробел, запятую? или не в одну ячейку? В какую ячейку?
как программно создать textbox в форме.
 
Private Sub CommandButton1_Click()  
   Dim btn As msforms.TextBox  
   Set btn = Me.Controls.Add("Forms.TextBox.1", "MyTexTBox", Visible)  
   btn.Left = 5  
   btn.Top = 5  
   btn.Width = 20  
   btn.Height = 20  
End Sub
OptionButton - как решить задачу??
 
{quote}{login=m@rio_}{date=14.01.2009 02:25}{thema=OptionButton - как решить задачу??}{post}Создал форму: несколько TextBox, OptionButton и кнопки управления. Цель:    
1. после заполнения TextBox и нажатия определенной кнопки экспортировать данные в лист2 Excel с сохранением на этом листе - выполнено.  
2. в Frame находится 2 шт. OptionButton. При выборе например 1-го, чтоб в лист2 Excel (в любой необходимой ячейке) появилась заданная заранее надпись. Но чтоб после закрытия формы эта надпись на листе2 оставалась, кроме того, после выбора OptionButton'а во второй раз надпись уже появлялась на одну ячейку ниже. и так каждый раз.  
 
Помогите пож-та кто чем может!!ооочень срочно нуно..{/post}{/quote}  
 
эхм  
сложно понять конечно, че там за структура, но как вариант.  
worksheets("Лист2").Range("A65536").end(xlup).offset(1,0).value="Заданная заранее надпись"  
 
В событие optionbutton_change или какое-нить такое.  
Будет писать в столбец А, но надо чтобы там хотя бы A1 было заполнено.  
 
вообще лучше с примером
Хранение настроек вида экселя в переменной или на листе.
 
Приветствую,    
 
Возникла необходимость создать "минималистический" эксель, чтобы он выглядел как отдельно написанная программа почти.  
Начал с скрывания коммандбаров (их естественно надо восстанавливать перед закрытием книги)  
Код:  
 
Option Explicit  
Dim cBars() As CommandBar  
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
   Application.ScreenUpdating = False  
   'Restore command bars  
   On Error Resume Next  
   Dim i As Integer  
   For i = 0 To UBound(cBars)  
       cBars(i).Visible = True  
   Next  
   On Error GoTo 0  
   'Protect book  
   ActiveWorkbook.Protect "123", Structure:=True, Windows:=False  
   Application.ScreenUpdating = True  
End Sub  
 
Private Sub Workbook_Open()  
   Application.ScreenUpdating = False  
   'Unprotect book  
   ActiveWorkbook.Unprotect "123"  
   'Get visible command bars, save reference to them and hide them  
   Dim cBar As CommandBar, i As Integer  
   i = 0  
   For Each cBar In Application.CommandBars  
       If cBar.Visible Then  
           On Error GoTo nextfor  
           cBar.Visible = False  
           On Error GoTo 0  
           ReDim Preserve cBars(0 To i)  
           Set cBars(UBound(cBars)) = cBar  
           i = i + 1  
       End If  
nextfor:  
   Next  
   'Activate working sheet  
   Worksheets("Quest").Activate  
   Application.ScreenUpdating = True  
End Sub  
 
Но сохранение в оперативке мне кажется как-то не очень надежным чтоли (возможно при краше экселя или системы инфа о изначальных параметрах пользователя пропадет и потом фиг знает как восстановить её).  
Хранение на листе кажется ненадежным, потому что придется как-то сравнивать по cBar.Name с cstr(worksheets("Hidden").range("A1").value) потом, что мне кажется не очень хорошо. И вообще медленней будет.  
 
Кто что скажет по этому поводу? :)
Обращение к нескольким листам, диапазонам в VBA.
 
То есть я имел ввиду что    
range("a1")=Evaluate("=PercentRank("B1:B100",25)"  
работает быстрее чем  
set rng=Range("B1:B100")  
i=25  
range("a1")=Worksheetfunction(rng,i)
Обращение к нескольким листам, диапазонам в VBA.
 
Также сейчас пришел к выводу что найти текстом параметры формулы (любыми стандартными методами обработки строк бейсика) и сделать Evaluate работает значительно быстрей, чем через If'ы выискивать промежуточные этапы и считать их с Worksheetfunction.PercentRank например.  
 
Реализованные микромягкими функции на C++ работают очень значительно быстрее)
Обращение к нескольким листам, диапазонам в VBA.
 
Да это всё понятно, но это работает весьма медленно.  
Сравните код например  
For i = 255 to 1  
Range("A" & i").entirecolumn.delete  
next  
 
с    
Range("A1:A255").entirecolumn.delete  
 
по времени выполнения.  
 
или например  
Worksheets("Sheet1").delete  
Worksheets("Sheet2").delete  
...  
Worksheets("Sheet10").delete  
 
с    
 
Worksheets(Array("Sheet1","Sheet2",...,"Sheet10").delete  
 
Вот мне очень интересно узнать либо про список того, что можно применять к массиву рабочих листов одной операцией, а что придется всё-таки по отдельности делать.  
Через Select и потом Selection работает значительно быстрей, чем последовательно перебрать 10 листов и на каждом по 12 рядов ресайзнуть.  
 
Просто есть задача, в которой надо из 1 файла сделать файлов 80 с вырезанными  по определенным условиям одними данными и добавленными в некоторых места опять же по условиям другими данными. Хорошо если это будет делаться за 1-2 мин, а не за 7-8 (каждый файл)
Обращение к нескольким листам, диапазонам в VBA.
 
Даже так приходится:  
ThisWorkBook.WorkSheets(wsName).Select  
Rows("22").Select  
Selection.RowHeight=10  
 
ппц коряво выглядит то что должно записываться в одну строчку :(
Обращение к нескольким листам, диапазонам в VBA.
 
{quote}{login=Артем}{date=14.11.2008 02:59}{thema=}{post}так если не нравятся эти методы-  не пользуйтись ими, так и пишите  
ThisWorkBook.WorkSheets(wsName).Rows("22").RowHeight=10{/post}{/quote}  
 
run time error 438 тогда :)
Обращение к нескольким листам, диапазонам в VBA.
 
Столкнулся с задачей масс-форматирования схожих страниц и заметил, что код занимает весьма много времени.  
 
Конкретней, мне надо было изменить на 11 листах ширину строк с 22 по 34 на определенные значения, удалить несколько листов или определенные строки/столбцы на 11 листах.  
 
Ну и собственно был код в 2-х вариантах (с массивом листов и массивом названий листов):  
dim wsName(1 to 11) as String  
wsName(1)="Sheet1"  
...  
wsName(11)="Sheet11"  
 
for j = 1 to 11  
ThisWorkBook.Worksheets(wsName(j)).Rows("24").RowHeight=10  
ThisWorkBook.Worksheets(wsName(j)).Rows("25").RowHeight=15  
...  
ThisWorkBook.Worksheets(wsName(j)).Rows("32").RowHeight=20  
Next  
 
Ну и аналогично для массива листов, было    
ws(j).Rows("24").RowHeight=10 в цикле  
 
Работало это всё медленно, нашел в хелпе обращение к массиву листов Worksheets(Array("Sheet1", "Sheet2", "Sheet3"), и нашел что оно работает с применением строкового массива типа (Worksheets(wsName))  
 
Но, что было неудобно:  
Для того, чтобы например изменить высоту строк, приходилось писать такой код:  
ThisWorkBook.WorkSheets(wsName).Select  
Rows("22").RowHeight=10  
 
То есть выделение листа, и выделение строки на активном листе (ну фиг с ним с ScreenUpdating = false пользователь этого не видит), но мне кажется, что это как-то криво и должна быть возможность сделать это без Select'а.  
А ещё в коде перед этим открывается другой эксель файл и чтобы заработал Select, нужно было писать ThisWorkBook.Activate.  
Мне оч. сильно не нравятся методы Select/Activate, поэтому собственно и создал эту тему :)
Получить цифры из строки.
 
Супер, спасибо )
Получить цифры из строки.
 
Не, ну это понятно, мне бы как-нибудь в 1 строку красиво :)
Получить цифры из строки.
 
Всем доброго утра, задачка следующая:  
Есть строка param, значение может быть "Value1", "Value15", "Value156", "Parameter1", "Parameter25" и т.п.  
Пытаюсь придумать как-нить на VBA или можно с worksheetfunction как забрать цифры справа в одну строчку. Через IFы задавать (if like "Value*", if like "Parameter*" then right(str, len-5), right(str,len-9)) получается как-то громоздко :(
Страницы: 1 2 3 4 5 След.
Наверх