Я работаю над кодом 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