Функция, которая находит минимальное значение в строке на основе условия - PullRequest
0 голосов
/ 02 июля 2019

Я работаю над кодом VBA, который откроет существующую книгу в другом файле и скопирует данные из указанной книги в активную книгу для каждой строки.

Я хочу скопировать минимальный процент в 11-й строке другой рабочей книги, используя функцию. Функция должна найти минимальное значение в 11-й строке другой рабочей книги при условии, что абсолютное значение указанного минимума меньше 100 (поскольку в строке есть как проценты, так и общие значения).

Мой код уже открывает рабочий лист, с которого я хочу скопировать данные для каждой строки. Мне просто нужно найти способ скопировать минимальный процент.

Жирным шрифтом я хочу изменить. Я хочу, чтобы rng1 был целым 11-м рядом

Любая помощь будет высоко ценится.

Sub StressTest()

Dim index As Integer
Dim dateColumn As Integer
Dim portfolioDate As String
Dim portfolioName As Variant
Dim ParametricVar As Double
Dim AuM As Double
Dim PreviousVar As Double
Dim PreviousAuM As Double
Dim strPath As String
Dim strFilePath As String
Dim wb As Workbook
Dim sheet As Worksheet
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim workB As Workbook
Dim min As Double
Dim max As Double


Set wb = ThisWorkbook
Set sheet = ActiveSheet


portfolioDate = InputBox("Please enter date under the following form : YYYY-MM", "Date at the time of Stress Test", "Type Here")
Debug.Print "Current portfolio date is: " & portfolioDate


For index = 34 To Cells(Rows.Count, "B").End(xlUp).Row

dateColumn = MatchHeader(portfolioDate)
portfolioName = ActiveSheet.Range("B" & index & "").Value


strPath = "G:\Risk\Risk Reports\VaR-Stress test\" & portfolioDate & "\" & portfolioName & ""

Set wb = Workbooks.Open(strPath)

ParametricVar = Workbooks(portfolioName).Worksheets("VaR Comparison").Range("B19")
PreviousVar = sheet.Cells(index, dateColumn + 7).Value
AuM = Workbooks(portfolioName).Worksheets("Holdings - Main View").Range("E11")
PreviousAuM = sheet.Cells(index, dateColumn + 9).Value

sheet.Cells(index, dateColumn).Value = ParametricVar / AuM
sheet.Cells(index, dateColumn + 1).Value = (ParametricVar - PreviousVar) / PreviousVar
sheet.Cells(index, dateColumn + 2).Value = AuM
sheet.Cells(index, dateColumn + 3).Value = (AuM - PreviousAuM) / PreviousAuM
**
Set ws1 = wb.Worksheets("Scenarios - Main View")
Set ws2 = wb.Worksheets("VaR - Main View")
Set rng1 = ws1.Range("P11:AA11")
Set rng2 = ws2.Range("J16:J1000")

min = Application.WorksheetFunction.min(rng1)
max = Application.WorksheetFunction.max(rng2)
sheet.Cells(index, dateColumn + 5).Value = min
sheet.Cells(index, dateColumn + 6).Value = max
sheet.Cells(index, dateColumn + 4).Value = Application.WorksheetFunction.min(rng1)
**


wb.Close Savechanges:=False

Next index




End Sub



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...