01. september 2011 - 13:14Der er
9 kommentarer og 1 løsning
Opslag ind i intervaller
Jeg har en efterhånden maget lang formel på 57 hvis formler inden i hinanden. Den må man da kunne lave smartere.
Jeg har i Ark 1 en kolonne med værdier(vægt(kolonne A)) der skal slås op for hvilken vægt zone de tilhøre. Derfor har jeg lavet et yderligere ark med 3 kolonner(A, B, C). Kolonne A indeholder den laveste vægt i det interval. Kolonne B indeholder den højeste vægt i det interval. Kolonne C indeholder vægt zonen. Vægt Zonen (ark 2 kolonne C) skal returneres til Kolonne B i ark 1.
Eksempel Ark 1: A B 1 Vægt Vægt zone 2 13 3 24 4 55 5 777 6 978 7 1300 8 13 9 87 10 9 11 1 12 666 13 9134
Det her er kun uddrag af de enkelte ark. Der findes 57 forskellige Vægt zoner (ark 2 Kolonne C) Der går fra en vægt på 0 kg til 30.000kg. Der findes godt 100.000 linjer der skal vurderes (ark 1 kolonne A).
Rem Kopier dette Ctrl+C Rem Koden indsættes under Ark1 (Højreklik / Visprogramkode / Indsæt (Ctrl+v) Rem Gem og luk VBA-vinduet Rem Excel skal være indstillet til at køre makro Rem == Rem Udfør makro: Fra Ark1 Alt+F8 - afspil viste makro (tildelVægtZone)
Dim antalZ As Byte, zTabel() As Integer Public Sub tildelVægtZone() Dim antalRæk As Long, vægt As Integer Dim ræk As Long, vægtZone As Byte
Rem opbyg intern tabel ReDim zTabel(antalZ) For ræk = 2 To antalZ zTabel(ræk - 1) = ActiveSheet.Range("A" & ræk) Next ræk
Rem Tildel vægtzoner ActiveWorkbook.Sheets(1).Activate antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
For ræk = 2 To antalRæk Rem vis aktuelle række Application.StatusBar = "Ræk: " & ræk vægt = Range("A" & ræk) vægtZone = findVægtZone(vægt) Range("B" & ræk) = vægtZone Next ræk
Application.ScreenUpdating = True End Sub Private Function findVægtZone(vægt) Dim f As Byte For f = 1 To antalZ If zTabel(f) > vægt Then findVægtZone = f - 1 Exit For End If Next f
Ja det skrev jeg ikke noget om beklager. I princippet ja så må det godt, men jeg vil klart fortrække en løsning der ikke er en VBA løsning. Da dette spare mig for og skulle indvoldvere andre.
Jeg har ikke selv arbejdet med VBA før, så jeg har lige været forbi vores it afd. for og aftale en tid hvor vi lige kan snakke lidt om det, og de lige viser/hjælper/underviser i det:)
(Formlen på 105 tegn returnerer #I/T for vægte større end det der er angivet som sidste "Højeste vægt" (=600), hvor VBA-hoden på 823 tegn returnerer nul).
Jeg ved ikke om opfordringen gælder mig, men i hvert fald, se gerne bort fra mig i pointsammenhæng.
Hans
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.