Круто! Ёк-Мок, спасибо ))) Как я мало понимаю еще в экселе )) Точнее логика понятна, а синтаксис и формулы надо ботанить
Универсальный путь к файлу и ячейке, без макросов
Пользователь
Сообщений: Регистрация: 01.01.1970
31.10.2013 17:53:57
Появилась идея сделать универсальный путь к файлу - он записан текстом в ячейке и его можно поменять. Один раз его прописать где-нить типа на листе config, типа как настройка.
В приложении все работает - через ДВССЫЛ у меня появляется значение ячейки на втором листе page2!A1 - все ок, но вот только название ячейки A1 было прописано тоже как текст и, соответственно, формула не протягивающаяся. Можно ли что-нить придумать?
Без макросов.
суммпроизв и массив, как избавиться от лишнего столбца и запихнуть все в одну формулу
Пользователь
Сообщений: Регистрация: 01.01.1970
31.10.2013 11:07:01
Владимир, не знал что можно вот так {2002;2115} сделать, я пытался через ИЛИ и ,естессно, не получалось, спасибо! Такая формула вообще простая и удобная.
суммпроизв и массив, как избавиться от лишнего столбца и запихнуть все в одну формулу
Пользователь
Сообщений: Регистрация: 01.01.1970
30.10.2013 14:29:24
Ё-маё, сколько времени убил, чтобы понять как ИЛИ впихнуть )) LVL, спасибо!
суммпроизв и массив, как избавиться от лишнего столбца и запихнуть все в одну формулу
Пользователь
Сообщений: Регистрация: 01.01.1970
30.10.2013 14:14:49
Всем привет. Что-то я туплю и не могу сообразить. В приложении все описано. 2 столбца - коды и числа, надо просуммировать числа, по определенным кодам. Можно ли это сделать одной формулой? Чтобы все работало, приходится добавлять новый столбец, либо использовать несколько формул в одной ячейке. Спасибо
как можно оптимизировать код VBA(слишком длинный код)?
Пользователь
Сообщений: Регистрация: 01.01.1970
20.09.2011 16:23:01
EducatedFool, спасибо за подсказку ))
как можно оптимизировать код VBA(слишком длинный код)?
Пользователь
Сообщений: Регистрация: 01.01.1970
20.09.2011 16:05:51
Public Sub expenses_utilit(mon As Range, year As Range, per As Range, vvod As Range, data_sales As Range, utilit As Range)
Dim x(12) As String Dim m As Integer Dim i As Integer Dim l As Integer Dim j As Integer Dim k As Integer Dim cnt As Integer Dim rost_sal As Integer Dim y As Integer Dim revenue(2) As Single
For i = 0 To n - 1 If x(i) = mon.Value Then m = i End If Next
k = n - m + n * (per.Value - 1)
cnt = m index_infl = 0 H = 4
Do While k > 0
If (k <= n - m + n * (per.Value - 1) - data_sales.Value + 1) Then
utilit.FormulaR1C1 = "=R[1]C*R[2]C*Initial!R25C5" With utilit .NumberFormat = "#,##0" .Interior.ColorIndex = 15 .Font.Name = "Times New Roman" .Font.Size = 10 End With
revenue(0) = revenue(0) + utilit
If (vvod.Value = "Год") Then Columns(H).Hidden = True Else Columns(H).Hidden = False End If
Else utilit.Formula = "0" With utilit .NumberFormat = "#,##0" .Interior.ColorIndex = 15 .Font.Name = "Times New Roman" .Font.Size = 10 End With energy.Formula = "0" With energy .NumberFormat = "#,##0" .Interior.ColorIndex = 2 .Font.Name = "Times New Roman" .Font.Size = 10 End With
If (vvod.Value = "Год") Then Columns(H).Hidden = True Else Columns(H).Hidden = False End If
End If
Set utilit = utilit.Offset(0, 1)
cnt = cnt + 1
If cnt >= n Then H = H + 1 cnt = 0
utilit = revenue(0) With utilit .NumberFormat = "#,##0" .Interior.ColorIndex = 15 .Font.Name = "Times New Roman" .Font.Size = 10 End With
revenue(0) = 0
y = y + 1
Set utilit = utilit.Offset(0, 1)
End If
k = k - 1 H = H + 1
Loop
For l = k + 1 To 7 * 12
utilit.Clear With utilit .Interior.ColorIndex = 2 End With Set utilit = utilit.Offset(0, 1)
Next
End Sub
Вот код программы. В зависимости от заданных параметров выводит структуру по месяцам или по годам. Это издержки(затраты). В первой строчке у меня зарплаты - с января и 48 мес - выводятся зарплаты. Во второй строчке - оборудование тоже, самое, только там уже нужна формула(не ссылка на зп, как в первом случае).
Получается, что для всех нужных строк будет одинаковый код, кроме самой формулы: utilit.FormulaR1C1 = "=R[1]C*R[2]C*Initial!R25C5"
В аргументе Sub формула не передается(либо я синтаксис плохо знаю), была идея рассчитать формулы и значения вписать в другие строки(скрытые), а потом просто передавать на формулу, а только значение ячейки - может можно проще все сделать?
как можно оптимизировать код VBA(слишком длинный код)?
Пользователь
Сообщений: Регистрация: 01.01.1970
20.09.2011 15:38:08
Добрый день! Имеется несколько Sub, которые имеют одинаковые алгоритмы, но разные формулы:
Public Sub sales(bill as Range) ... ... if ... ... while ...
bill.Value = "=Sales_source!F6"
... ...
можно ли как-то передавать в Sub - формулы или названия ячеек?!
Т.е. чтобы Sub sales был один, а сейчас у меня их 30шт(каждый с разной формулой) и в каждом по 40строк кода?
Могу выслать конкретный пример. Спасибо!
Как инкрементировать дату?!
Пользователь
Сообщений: Регистрация: 01.01.1970
15.09.2011 19:57:00
А при использовании FormulaR1C1 и r1 = r1.Offset() не должен ли инкрементироваться в дате #1/1/2012# первый символ?! Вообще у меня случайно как-то получилось(Наподобии AutoFill), но начал подчищать мусор и видимо что-то удалил (((( Терь не пойму как у меня так получилось
а если увеличивать месяц, то что можно добавить ?! перевести дату в общей формат и добавить 30?! Тока дней где-то 30, где-то 31
Как инкрементировать дату?!
Пользователь
Сообщений: Регистрация: 01.01.1970
15.09.2011 19:38:16
Всем привет! Подскажите, как можно инрементировать дату на VBA что было так:
янв.12 фев.12 мар.12 и до значения указанного в ячейке(допустим 1 год)
Я делаю так
Dim r1 As Range Dim dt As Date Dim i As Integer
Set r1 = Range("A1") r1.NumberFormat = "mmm-yy"
dt = #1/1/2012#
for i = 1 to (сколько задано лет) r1.Select r1.FormulaR1C1 = dt Set r1 = r1.Offset(0, 1) next
Получается так: создается именно столько сколько надо ячеек, но везде пишется янв.12 почему не инкрементируется дата?!
AutoFill не поможет, т.к. не понятно до какой ячейки автофилить. Если мой способ вообще не должен работать, то подскажите, как вообще можно решить мою задачу.
Дано: Начал мес март - значения меняются Начал год 2012 - значения меняются Срок проекта 2 - значения меняются