По условию задачи необходимо подтянуть в ячейку название столбца, в котором будет стоять максимальное значение по цифрам. Формулами индекс и поискпоз подтянул все верно, но одна строчка должны содержать два названия и формулу придется переписывать и унифицировать для всех строк. Сможете подсказать как сделать? Файл в приложении.
Добрый день!
По условию задачи необходимо подтянуть в ячейку название столбца, в котором будет стоять максимальное значение по цифрам. Формулами индекс и поискпоз подтянул все верно, но одна строчка должны содержать два названия и формулу придется переписывать и унифицировать для всех строк. Сможете подсказать как сделать? Файл в приложении.finlib
Function Segment(Prod_Range As Range, Segm_Range As Range) As String Dim i As Long, n As Long, a, b, c() As String a = Prod_Range: b = Segm_Range For i = 1 To UBound(Application.Transpose(a)) If a(1, i) = WorksheetFunction.Max(Prod_Range) Then ReDim Preserve c(0 To n) c(n) = b(1, i): n = n + 1 End If Next i Segment = Join(c, "," & Chr(10)) End Function
[/vba]
Функция пользователя
[vba]
Код
Function Segment(Prod_Range As Range, Segm_Range As Range) As String Dim i As Long, n As Long, a, b, c() As String a = Prod_Range: b = Segm_Range For i = 1 To UBound(Application.Transpose(a)) If a(1, i) = WorksheetFunction.Max(Prod_Range) Then ReDim Preserve c(0 To n) c(n) = b(1, i): n = n + 1 End If Next i Segment = Join(c, "," & Chr(10)) End Function
С ума сойти, работает! Спасибо!! Но это не похоже ни на что из того, что я знал раньше! Как?! А нельзя там в подтянутых данных посередке запятую или "и" подставить, чтобы больше было похоже на ручной текст? не сочтите за наглость, но сам не сумею
С ума сойти, работает! Спасибо!! Но это не похоже ни на что из того, что я знал раньше! Как?! А нельзя там в подтянутых данных посередке запятую или "и" подставить, чтобы больше было похоже на ручной текст? не сочтите за наглость, но сам не сумею finlib
Function Segment(Prod_Range As Range, Segm_Range As Range) As String Dim i As Long, n As Long, a, b, c() As String a = Prod_Range: b = Segm_Range For i = 1 To UBound(Application.Transpose(a)) If a(1, i) = WorksheetFunction.Max(Prod_Range) Then ReDim Preserve c(0 To n) c(n) = b(1, i): n = n + 1 End If Next i Segment = Join(c, "," & Chr(10)) End Function
В задании стоит надо формулой решать За макрос спасибо! Он тоже работает!
Цитата (AlexM)
Function Segment(Prod_Range As Range, Segm_Range As Range) As String Dim i As Long, n As Long, a, b, c() As String a = Prod_Range: b = Segm_Range For i = 1 To UBound(Application.Transpose(a)) If a(1, i) = WorksheetFunction.Max(Prod_Range) Then ReDim Preserve c(0 To n) c(n) = b(1, i): n = n + 1 End If Next i Segment = Join(c, "," & Chr(10)) End Function
В задании стоит надо формулой решать За макрос спасибо! Он тоже работает!finlib