Дано: Есть журнал с торговыми операциями по акциям - колонки B-G.
Задача: Рассчитать актуальную текущую среднуюю цену по каждой акции и прибыль по каждой операции продажи.
Что сделано: Посчитаны средние текущие цены в ячейках N12, N13.
Проблема: Для расчета прибыли, необходимо рассчитать средневзвешенную цену покупки до момента наступления соответствующей продажи, поскольку средневзвешенная цена покупки изменится после выбытия части акций по методу FIFO - сначала выбывают акции, купленные первыми.
Буду признателен за любые идеи!
P.S. Стараюсь сделать формулы в колонках едиными, чтобы потом проще было загружать в PQ.
Созвониться по зуму, где я на примере покажу, что необходимо от решения, какие исходные данные и какой результат требуется. Специалист, в свою очередь, предложит варианты связок PP, PQ, BI, VBA, которые в принципе способны это делать, и основные подводные камни, с которыми я могу столкнуться. В общем такой мозговой штурм, чтобы не изобретать заново уже имеющиеся готовые решения.
Плохо работает встроенное автоматическое сохранение - часто теряю данные. Решил сделать собственный код на сохранение всех открытых Excel файлов. Код работает, но необходимо настроить его автозапуск при открытии Excel.
На текущий момент ситуация следующая: В Personal.xlsb в ThisWorkbook вставлен следующий код:
Код
Sub Workbook_Open()
Call SaveIt
End Sub
В Module5 прописано:
Код
Option Explicit
Sub SaveIt()
Dim xWb As Workbook
Dim dt As String
Application.DisplayAlerts = False
dt = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss")
For Each xWb In Application.Workbooks
If xWb.Path = vbNullString And Not xWb.ReadOnly And Windows(xWb.Name).Visible Then
xWb.SaveCopyAs Filename:="C:\User\Desktop\Excels" & "\" & dt & " - " & xWb.Name & ".xlsx" ' __ ВОТ ЗДЕСЬ ОШИБКА __
Else
If Not xWb.ReadOnly And Windows(xWb.Name).Visible Then
xWb.SaveCopyAs Filename:="C:\User\Desktop\Excels" & "\" & dt & " - " & xWb.Name
End If
End If
Next
Application.DisplayAlerts = True
Application.OnTime Now + TimeValue("00:05:00"), "SaveIt"
End Sub
При запуске выдает ошибку в помеченной комментарием строке. При удалении первого куска кода из ThisWorkbook второй код работает, но необходимо запускать его вручную при старте Excel.
Насколько понимаю, запуск Excel это более сложное событие, первый код - это шорткат, который пока не работает)
Стоит такая задача - проверять ячейку на предмет, является ли она частью формулы в конкретной ячейке (входит ли она, например, в формулу суммы смежных ячеек)
Каким образом можно настроить условное форматирование ячейки, чтобы она меняла заливку в зависимости от того, входит ли она в эту конкретную формулу или нет. Желательно без помощи VBA.
Хотел узнать ваше мнение по организации обновления бюджетов.
Дано: - Есть один главный консолидированный бюджет, в который подтягиваются данные бюджетов дочерних компаний (из отдельных файлов) - Дочерние и главный бюджеты периодически обновляются - Обновление происходит либо ручным переключением ссылки на новый файл, либо перелинковкой на новый файл, если какие-то поля сдвинулись
Задача: - Организовать обновление главного бюджета при обновлении дочерних в каком-то более или менее удобном автоматическом режиме - Иметь возможность отслеживать версии - из какой версии дочерних бюджетов подтягиваются цифры
Проблемы: - С исходными данными - разработаны стандартизированные формы, чтобы иметь возможность обновляться, просто меняя ссылку на файл. Но периодически данные меняются, и приходится всё перелинковывать вручную - С прозрачностью данных при пересылке - суммарно получается 5+ файлов, так что получатель не может в одном файле посмотреть все исходники - Контроль версий никак не решен кроме 2020 05 15 - XXX_v75.xlsx
Попытки решения: - Для дочерних компаний в файлах бюджетов сделаны листы с основными выходными параметрами, которые с свою очередь являются исходниками для консолидированного бюджета - Эти листы затем импортируются в главный бюджет, чтобы удобно линковать, и смотреть исходники при пересылке файла (либо copy-paste, чтобы остались ссылки на ячейки)
Вопросы: 1. Какие знаете удобные комплексные решения для подобного типа задач? Типа облачные, где обновление происходит автоматически через мастер-файлы, например. 2. Если готовых решений нет, что можете подсказать по оптимальной цепочке обновлений и формату - отдельные импортированные листы, отдельные файлы или базы данных 3. Контроль версий - в идеале хотелось бы знать, откуда тянется каждая цифра с комментариями к ней
Всем привет! Задача следующая - заменить все формулы определенного типа во всей книге на значения с помощью макроса. Т.е. если в ячейке попадается, например, формула =SUM(A1:A2)+COUNT(A1), то вся ячейка заменяется на значение.
Нашел следующий макрос.
Код
Sub test()
Dim c As Range
For Each c In ActiveSheet.UsedRange.Cells
If c.HasFormula Then
If InStr(1, c.Formula, "SUM") <> 0 Then c.Value = c.Value
End If
Next
End Sub
Хочу попросить вашей помощи в исправлении макроса таким образом, чтобы он действовал в отношении всей книги, а не только активного листа. Да, пример не прикладываю, поскольку задача вроде бы предельно ясна.
По оплате плз в личку. Нужно в течение нескольких часов.
Всем привет! Задача следующая - заменить все формулы определенного типа во всей книге на значения с помощью макроса. Т.е. если в ячейке попадается, например, формула =SUM(A1:A2)+COUNT(A1), то вся ячейка заменяется на значение.
Нашел следующий макрос.
Код
Sub test()
Dim c As Range
For Each c In ActiveSheet.UsedRange.Cells
If c.HasFormula Then
If InStr(1, c.Formula, "SUM" <> 0 Then c.Value = c.Value
End If
Next
End Sub
Хочу попросить вашей помощи в исправлении макроса таким образом, чтобы он действовал в отношении всей книги, а не только активного листа. Да, пример не прикладываю, поскольку задача вроде бы предельно ясна.
Всем доброго времени суток! Дано: Windows 7, Office 2010
Прошу помочь со следующей задачей - нужно открыть 2 разных файла на 2-х разных мониторах и сохранить возможность копирования данных/формул/ссылок из одного файла в другой. Прочитал статьи на тему - понятно, как открывать новый файл в новом окне на 2-м мониторе - проблема заключается в том, что пропадает возможность нормальной работы сразу с двумя файлами в контексте перекрестных ссылок, формул и т.д.
Подскажите, есть ли решение вопроса? Слышал, эта проблема вроде бы решена в 2013-й версии, но возможности проверить не было (впрочем, как и перейти на нее). Спасибо!
Существует ли надстройка, не требующая установки (т.к. есть ограничения на установку на рабочем компе), которая помогала бы трейсить формулы. В идеале, конечно же, хорошо было бы как-то поставить эту надстройку
Подскажите, пожалуйста, как сделать так, чтобы при открытии определенного файла появлялось окошко с определенной информацией (например, инструкцией к тому, что находится в файле).
В VBA я новичок, поэтому могу только на основе здравого смысла исправлять код. Но тут что-то но получается, поэтому прошу вашей помощи.
Задача состоит в том, чтобы на активном листе сопоставить значения из ячеек C2:L2 c данными столбца B листа "111", где перечислены наименования продуктов.
Значения в ячейках могут точно не совпадать с искомыми значениями стобца B.
А необходимо просто ниже ячеек, в которых производится поиск поставить "нормальные" названия. Т.е. чтобы под "Молоко-5-10-15-Х" стояло "Молоко".
Макрос выдает ошибку в строке:
FirstFoundCell.Offset(3, 0) = StringToFind
Я, честно говоря, ваще не в теме, с чем это может быть связано, поэтому и прошу совета.
Так же, если возможно, хотелось бы, чтобы макрос выдавал первое совпадение, а не последнее, т.е. сейчас под "Молоко-Кефир-10" выдается "Кефир".
Спасибо!
Код
Sub Поиск()
LastRow = Sheets("111").Range("B65536").End(xlUp).Row
Dim StringToFind As String
For i = 1 To LastRow
StringToFind = Sheets("111").Range("B" & i).Value 'значение для поиска
'<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>
On Error GoTo 1
Dim FirstFoundCell As Range, FoundCell As Range
Application.ScreenUpdating = False
Set FirstFoundCell = Range("C2:L2").Find(what:=StringToFind)
FirstFoundCell.Offset(3, 0) = StringToFind
If FirstFoundCell Is Nothing Then
Exit Sub
End If
Set FoundCell = FirstFoundCell
Do
Set FoundCell = Range("C2:L2").FindNext(After:=FoundCell)
FoundCell.Offset(3, 0).Value = StringToFind
If FoundCell.Address = FirstFoundCell.Address Then Exit Do
Loop
1:
Next i
End Sub
Необходимо импортировать в сводную книгу данные из других книг. Книг много. Хочется как-то автоматизировать процесс через параметризацию имен файлов и книг. Приходит на ум только функция INDIRECT (ДВССЫЛ). Но она, к сожалению, не работает с закрытыми книгами. Поискал по нету - есть расширенная версия данной функции, но хочется, чтобы файл был максимально унифицированным и работал на всех компах, а уверенности в работоспособности расширенной двссыл нет.
Подскажите, какие еще могут быть варианты ссылки на другие книги (закрытые), кроме ДВССЫЛ? Есть пара решений VBA - работатает по примеру двссыл, но не совсем то, что нужно.
Мое видение - неплохо было бы, если бы сначала прописать формулы через ДВССЫЛ, а потом макросом их перевести в ссылки, т.е. как бы провести одну итерацию формулы.
Вот код, который накопал в сети:
Код
Private Sub Worksheet_Calculate()
Dim rWatchRange As Range
Dim sBook As String
Dim sFilePath As String
On Error Resume Next
Application.EnableEvents = False
Set rWatchRange = Range("B2:H2")
If Intersect(ActiveCell, rWatchRange) Is Nothing Then
Set rWatchRange = Nothing
Exit Sub
End If
sBook = ActiveCell
sFilePath = Range("FilePath")
Application.DisplayAlerts = False
ActiveCell.Offset(10, 0).Formula = _
"='" & sFilePath & "[" & sBook & ".xls]Sheet1'!R1C1"
Application.EnableEvents = True
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
Мне необходимо автоматизировать сбор данных с разных файлов, в формулах естественно фигурируют названия листов.
Не подскажите, каким образом вывести списком названия листов из соответствующих файлов. Погуглил - почти все решения выдают названия из текущей книги. А нужен вывод из файлов с заданным путем.
Задача следующая: на Bubble графике в легенде отображаются маленькие кружки. Когда данных много, трудно становится читать график. Подскажите, есть ли возможность увеличить размер кружков в легенде, не увеличивая размера названий в легенде.
Задача следующая - перевести формулы определенного типа (например, только vlookup или if) в значения с сохранением всех остальных формул.
Т.е. есть лист с большим количеством инфы, разными формулами и пр, но в значения нужно обратить только отдельные части.
Подозреваю, что здесь без макроса не обойтись.
В целом, полезен будет и такой вариант - выделять цветом ячейки с этими формулами - тут я пробовал играться с условным форматированием, но оно, к сожалению, работает только со значениями ячеек, а не с формулами, которые в них записаны.
Есть таблица, в первой строке которой по порядку расположены номера фирм (1,2,3...20), в первом столбце - даты. На месте Хij стоит определенный коэффициент, рассчитанный на момент i для фирмы j.
Что надо - надо по каждой строке вывести номера фирмы, значение показателей которых по данной строке входит в первые 30% распределения этих показателей (типа меньше 3-го дециля).