Применить формулу для разных рабочих книг - PullRequest
0 голосов
/ 18 апреля 2019

У меня проблема, я хочу применить формулу к моей основной книге со значениями из разных листов.Проблема в том, что используемая рабочая тетрадь ежемесячно, а название меняется.Я думал о переименовании первого листа в «Лист1» и применил формулу в целом для Листа 1.

    Function AlreadyOpen(sFname As String) As Boolean
    Dim wkb As Workbook
    On Error Resume Next
    Set wkb = Workbooks(sFname)
    AlreadyOpen = Not wkb Is Nothing
    Set wkb = Nothing
End Function

Sub ianuarie()

'ianuarie
    Dim wb2 As Workbook
    Set wb2 = Workbooks.Open("d:\LocalData\pw02353\Desktop\SDA si raport lunar\SDA ianuarie.xlsx")
    Dim wb1 As Workbook
    If AlreadyOpen("Estimation & Effort Tracking_SCAR_PE-S&P_DVO_2019.xlsx") Then
    Else
    Set wb1 = Workbooks.Open("d:\LocalData\pw02353\Desktop\SDA si raport lunar\Estimation & Effort Tracking_SCAR_PE-S&P_DVO_2019.xlsx")
    End If
    Workbooks("Estimation & Effort Tracking_SCAR_PE-S&P_DVO_2019.xlsx").Activate
    Range("U2").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMIF('[SDA ianuarie.xlsx]Sheet1'!C2,RC[-18],'[SDA ianuarie.xlsx]Sheet1'!C6)"
    Range("U2").Select
    Selection.AutoFill Destination:=Range("U2:U66"), Type:=xlFillDefault
        Range("U2:U66").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-78
    Range("U2").Select
    Application.CutCopyMode = False

End Sub

Option Explicit

Sub MonthTest() Dim strMonth As String

strMonth = InputBox("Introduceti luna", "Raport lunar", "ianuarie")

If strMonth = "ianuarie" Then
    Call ianuarie
    MsgBox "Ati selectat raportul pe luna ianuarie" ElseIf strMonth = "februarie" Then
    Call februarie
    MsgBox "Ati selectat raportul pe luna februarie"....and so on for each month

Мне нужно ссылаться на общий «Лист 1», если у меня открыта рабочая книга, только длявычтите и рассчитайте значения на его основе.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

На основе этой структуры:

Основная рабочая книга:

Main workbook

Майская рабочая книга:

May workbook

Рабочая тетрадь за июнь:

June workbook

В настоящее время сумма формул основана на ежемесячных именах рабочих книг.

Вам нужен код VBA, который добавляет новый месяц к формуле?

Добавляет июль:

SUMIFS([SumExternalJulWorkbook.xlsm]Sheet1!$B$2:$B$5;[SumExternalJuLWorkbook.xlsm]Sheet1!$A$2:$A$5;A2) 
0 голосов
/ 18 апреля 2019

Метод 1:

Вы можете сделать это довольно быстро с помощью функции поиска и замены:

Нажмите Ctrl + F, перейдите на вкладку замены.В поле «Найти» можно ввести «Лист1», а в поле «Заменить» ввести имя нового листа, на который вы хотите сослаться.

NB. Необходимо открыть меню «Параметры» и выбрать «Формулы».в раскрывающемся меню «Искать в».

Метод 2:

Вы можете использовать функцию НЕПОСРЕДСТВЕННО.Подробнее об этом: https://exceljet.net/formula/dynamic-worksheet-reference

...