Att hitta adress det lägsta värdet i en Range

August 25

När du skriver ett makro, kan du hitta det lägsta värdet i ett cellområde genom att använda WorksheetFunction metoden att tillämpa kalkylbladsfunktionen MIN. Du kan behöva, dock att inte bara hitta det lägsta värdet i intervallet, men också adressen till den första cellen som innehåller det värdet.

Ett enkelt sätt är att helt enkelt gå igenom det område som du vill undersöka och härleda både den lägsta värde och adressen till cellen som undersöks, som i följande:

Funktion FindLowestAddr (PRNG Som Range) As String
Application.Volatile
MINVAL = pRng.Cells (1) .Value
MinAddr = pRng.Cells (1) .Address
För varje c i PRNG
Om c.Value <MINVAL Därefter
MINVAL = c.Value
MinAddr = c.Address
End If
Nästa c
FindLowestAddr = MinAddr
End Function

Observera att detta tillvägagångssätt inte förlitar sig på kalkylbladsfunktionen MIN alls. Det finns en nackdel med det, men-det inte skilja mellan celler som innehåller numeriska värden och de som inte gör det. Med andra ord, om intervallet skickas till funktionen innehåller en tom cell, denna cell anses innehålla ett nollvärde, som mycket väl kan vara det lägsta värdet inom intervallet.

Ett sätt runt detta är att lita på kalkylbladsfunktioner inifrån makrot. Följande makro användningsområden både MIN och MATCH kalkylbladsfunktioner för att bestämma placeringen av minimivärdet och sedan indexet (offset) i den cellen i intervallet.

Funktion GetAddr (RNG Som Range) As String
Dim Dmin As Double
Dim LINDEX As Long
Dim sAddress As String

Application.Volatile
Med Application.WorksheetFunction
Dmin = .min (RNG)
Lindex = .Match (Dmin, RNG, 0)
End Med
GetAddr = rng.Cells (LINDEX) .Address
End Function

Det bör noteras att om du använder makrot bara för att upptäcka adressen eftersom du tänkte att det fanns något sätt att härleda den önskade informationen utan macro, då kan du göra sig av med makrot helt genom att använda en kalkylbladsformel. Till exempel, om du vill bestämma adressen till lägst värderade cell i det namngivna området MyRange, kan du använda följande:

= ADRESS (RAD (MyRange) + PASSA (MIN (MyRange), MyRange, 0) -1, KOLUMN (MyRange))

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (7140) gäller för Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Att hitta adressen till lägsta värde i en Range .