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

Страницы: 1
Создание функции в VBA для подсчета средневзвешенной суммы
 
Добрый день,
Подскажите пожалуйста как можно прописать в VBA луп функцию для подсчета средневзвешенной суммы?
Во вложении есть файл пример. В ячейке E16 формула которая используется сейчас, но она совсем неудобна, когда нужно рассчитывать для 100+ позиций. Можно ли ее как-то заменить луп функцией в VBA, которая делала бы аналогичный расчет для всего что выше этой функции?
Заранее спасибо)
Как заставить код выбрать массив для копирования до предпоследней используемой строки
 
Добрый день еще раз,

Подскажите пожалуйста как прописать код так чтобы он в качестве CopyRng выбирал диапазон (A3:E(предпоследняя используемая строка))? Я попытался прописать, но VBA выдает ошибку.

Код
Sub CopyDataWithoutHeaders()    Dim sh As Worksheet    Dim DestSh As Worksheet    Dim Last As Long    Dim shLast As Long    Dim CopyRng As Range    Dim StartRow As Long    With Application        .ScreenUpdating = False        .EnableEvents = False    End With    With Sheets("Major")        Application.Calculation = xlCalculationManual    End With        StartRow = 3        Set DestSh = Sheets("Major")           With Sheets("Major")        Range("A3:I5000").ClearContents        Range("K3:M5000").ClearContents    End With           For Each sh In ActiveWorkbook.Worksheets        If IsError(Application.Match(sh.Name, _                                     Array(DestSh.Name, "WARNING", "Major", "Main", "Users", "Table_for_report", "Final"), 0)) Then            Last = Sheets("Major").Cells(Rows.Count, 1).End(xlUp).Row                        shLast = Lastrow(sh)            If shLast > 0 And shLast >= StartRow Then                Set CopyRng = sh.Range("A3", Cells(Lastrow(sh) - 1, "E"))                                If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then                    MsgBox "There are not enough rows in the Destsh"                    GoTo ExitTheSub                End If                CopyRng.Copy                    If DestSh.Cells(3, "A") <> "" Then                        With DestSh.Cells(Last + 1, "A")                            .PasteSpecial xlPasteValues                        Application.CutCopyMode = False                        End With                    Else                        With DestSh.Cells(3, "A")                            .PasteSpecial xlPasteValues                            Application.CutCopyMode = False                        End With                    End If                End If         End If         If IsError(Application.Match(sh.Name, _                                     Array(DestSh.Name, "WARNING", "Major", "Main", "Users", "Table_for_report", "Final"), 0)) Then                Set CopyRng = sh.Range("J3:M500")                                If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then                    MsgBox "There are not enough rows in the Destsh"                    GoTo ExitTheSub                End If                CopyRng.Copy                    If DestSh.Cells(3, "F") <> "" Then                        With DestSh.Cells(Last + 1, "F")                            .PasteSpecial xlPasteValues                        Application.CutCopyMode = False                        End With                    Else                        With DestSh.Cells(3, "F")                            .PasteSpecial xlPasteValues                            Application.CutCopyMode = False                        End With                    End If         End If           If IsError(Application.Match(sh.Name, _                                     Array(DestSh.Name, "WARNING", "Major", "Main", "Users", "Table_for_report", "Final"), 0)) Then                Set CopyRng = sh.Range("W3:Y500")                If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then                    MsgBox "There are not enough rows in the Destsh"                    GoTo ExitTheSub                End If                CopyRng.Copy                    If DestSh.Cells(3, "K") <> "" Then                        With DestSh.Cells(Last + 1, "K")                            .PasteSpecial xlPasteValues                        Application.CutCopyMode = False                        End With                    Else                        With DestSh.Cells(3, "K")                            .PasteSpecial xlPasteValues                            Application.CutCopyMode = False                        End With                    End If         End If    Next        ExitTheSub:    Application.Goto DestSh.Cells(1)    DestSh.Columns.AutoFit        With Sheets("Major")        Application.Calculation = xlCalculationAutomatic        Worksheets("Major").Calculate    End With        With Application        .ScreenUpdating = True        .EnableEvents = True    End WithEnd Sub

Заранее спасибо.

Заблокировать лист excel от просмотра
 
Добрый день,

Подскажите пожалуйста есть ли способ как можно заблокировать лист Excel от просмотра его содержимого, но при этом чтобы его название было видно?

Заранее спасибо)
Нужно отфильтровать регионы в combo box по федеральным округам из списка
 
Добрый день,

Подскажите пожалуйста как решить следующую задачу.

Мне нужно чтобы в combobox во вкладке результат отображались только те регионы, которые входят в соответствующий федеральный округ. ФО должен выбираться из списка на той же вкладке. Информация по регионам и ФО во вкладке Регионы.

Спасибо за помощь)
Нужно чтобы цены подтягивались из другого листа и менялись в зависимости от выбранного региона.
 
По совету создаю вторую тему.

Формулировка задачи: нужно чтобы во вкладку Form подтягивались цены из вкладки Calculations и менялись в зависимости от выбранного региона. Во вложении 2 файла с примерами и ожидаемым результатом.
Как скопировать ячейки в такие же в другом листе?
 
Привет всем,

Помогите плиз начинающему в екселе, нужно с помощью макроса скопировать ячейки из одного листа в другой. Есть одно НО, когда я делаю копирование они вставляются в строчку по порядку, а нужно чтобы вставлялись в такие же ячейки. Например я хочу скопировать A3:D3; F3:L3 и Q3 одновременно, но они скопируются не в эти же ячейки в другом листе, а в range A3:M3, игнорируя изначальный формат. К сожалению использовать пропуск пустых ячеек нельзя так как в них в листе 1 есть информация. Подскажите есть ли удобоваримое решение?
Макрос на копирование информации в последнюю строку
 
Здравствуйте,

Никак не могу догадаться о решении следующей проблемы. В ексель файле есть 2 листа и нужно сделать макрос который копировал бы информацию из одного листа в другой в свободную строку после последней заполненной. После этого нужно удалить информацию которая была скопирована с первого листа. Если есть какие то идеи как это можно реализовать, буду безмерно благодарен.
Страницы: 1
Наверх