Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Valeur maxi d'une colonne

Caninge

XLDnaute Accro
Bonsoir à tous,

je fais un petit tour sur Excel Downloads avant d'aller diner et regarder ma série préférée " Columbo "
Je peux vous demander un petit peu d'aide pour résoudre ce problème ?
J'aimerais extraire la valeur maxi d'une colonne sachant qu'il y en a plusieurs dans chaque cellule.
j'ai essayé avec stxt , droite gauche maxi. je me suis mélangé les pinceaux.
Je vous remercie,
Bonne soirée
 

Pièces jointes

  • Fonction Maxi avec Formule Droite ou Gauche.xlsx
    10.2 KB · Affichages: 42

R@chid

XLDnaute Barbatruc
Supporter XLD
Bonjour @ tous,
Salut patricktoulon
Oui, parfait, je peux encore adapter ma formule pour pouvoir faire la même chose :
VB:
=AGREGAT(14;6;FILTRE.XML("<a><b>"&SUBSTITUE(JOINDRE.TEXTE("-";1;D2:D34);"-";"</b><b>")&"</b></a>";"//b");1)

Le 1 à la fin de la formule est le nième valeur à chercher.

Cordialement
 

patricktoulon

XLDnaute Barbatruc
re
je reprends la formule de @rachid mais pour les version inférieures a 365
Code:
=AGREGAT(14;6;FILTRE.XML("<a><b>"&SUBSTITUE(JOINDRE_TEXTE2007(A1:A3;"-");"-";"</b><b>")&"</b></a>";"//b");1)

la fonction JOINDRE_TEXTE2007
 

patricktoulon

XLDnaute Barbatruc
a oui tu parle de l'existant ok
donc voila les deux fonctions modifiées toujours sans boucles
VB:
'le plus grand AVEC FONCTION MAX
Function maxInJoinTexteIncolumn(r As Range, Optional séparator As String = ",")
    Dim Tbl(), T
    T = Join(Application.Transpose(Application.index(r, 0, 1)), séparator)
    T = Replace(T, séparator & séparator, séparator)
    T = "{" & Replace(T, séparator, ",") & "}"
    Tbl = Evaluate(T)
    maxInJoinTexteIncolumn = Application.WorksheetFunction.Max(Array(Tbl()))
End Function

Sub test3()
    MsgBox maxInJoinTexteIncolumn([A5:A7], ",")
    MsgBox maxInJoinTexteIncolumn([A1:A3], "-")
End Sub

'*********************************************************************************
'le N eme plus grand avec fonction LARGE
Function maxInJoinTexteIncolumn2(r As Range, Optional séparator As String = ",", Optional index& = 1)
    Dim Tbl(), T
    T = Join(Application.Transpose(Application.index(r, 0, 1)), séparator)
    T = "{" & Replace(T, séparator, ",") & "}"
    Tbl = Evaluate(T)
    maxInJoinTexteIncolumn2 = Application.WorksheetFunction.Large(Tbl, index)
End Function

Sub test5()
    MsgBox maxInJoinTexteIncolumn2([A1:A3], "-", 1)
    MsgBox maxInJoinTexteIncolumn2([A1:A3], "-", 3)

    MsgBox maxInJoinTexteIncolumn2([A5:A7], ",", 1)
    MsgBox maxInJoinTexteIncolumn2([A5:A7], ",", 3)

End Sub

pour les formules c'est pareil avec un argument en plus

exemple pour pour la fonction avec match
Code:
=maxInJoinTexteIncolumn(A5:A7; ",")
=maxInJoinTexteIncolumn(A5:A7; "-")
exemple pour celle avec la fonction large

Code:
    =maxInJoinTexteIncolumn2(A1:A3; "-"; 1)'le premier
    =maxInJoinTexteIncolumn2(A1:A3; "-"; 3)'le 3 eme


    =maxInJoinTexteIncolumn2(A5:A7; ","; 1)
    =maxInJoinTexteIncolumn2(A5:A7; ","; 3)
 

patricktoulon

XLDnaute Barbatruc
@sylvanu
allez la version pour la max en vertical ou horizontal
maintenant celle là tu peux l'archiver
VB:
'le plus grand
Function maxInJoinTexteIncolumn(r As Range, Optional séparator As String = ",")
    Dim Tbl(), T
    If r.Rows.Count > 1 Then
    T = Join(Application.Transpose(Application.index(r, 0, 1)), séparator)
    Else
    T = Join(Application.index(r.Value, 1, 0), séparator)
    End If
    If Right(T, 1) = séparator Then T = Left(T, Len(T) - 1)
   T = "{" & Replace(T, séparator, ",") & "}"
    Tbl = Evaluate(T)
    maxInJoinTexteIncolumn = Application.WorksheetFunction.Max(Array(Tbl()))
End Function

Sub test3() 'test vertical
    MsgBox maxInJoinTexteIncolumn([A5:A7], ",")
    MsgBox maxInJoinTexteIncolumn([A1:A3], "-")
End Sub

Sub test4() 'test horizontal
MsgBox maxInJoinTexteIncolumn([A1:D1], "-")
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…