22. februar 2012 - 16:29Der er
8 kommentarer og 1 løsning
Merged celler og håndtering af værdien
Hej Eksperten.dk,
jeg sidder med et mindre excel problem. Det er handler om værdier og merged celler. Jeg har nogle årsoversigter hvor forskellige aktiviteter figurerer henad, hvor rækkerne angives i måneder og uger.
Værdierne skal så summeres i forhold til måneder, men aktiviteter der eksempelvis går fra uge 1-6 har en samlet værdi, men kun den del af værdien der tilører januar er relevant for januar. Altså ikke hele værdien for cellen, men eksempelvis 4/6 af værdien. Ugernes tilhørsforhold bestemmes af forholdet af flertallet af dage, indeholder ugen eksempelvis 5 dage i januar og 2 i februar, tælles hele ugen med i januar.
Men der er sådan set hele opgaven.
I første omgang tænkte jeg at blot unmerge cellerne og kopiere værdien ud i alle de nye mindre celler og herefter dele den med antallet af celler. En mindre kompleks tilgang til løsningen, og del-automatisk i stedet for fuldautomatisk.
Jeg kan dog ikke finde en brugbar løsning på at kopiere værdien ud i de nye celler efter unmerge.
Håber der er nogle der har et forslag? og at beskrivelsen giver mening.
Ja, var også ude i at opsætte en løsning der anvendte kalenderfunktionen, men i første omgang skal jeg håndtere værdierne fra de sammenslåede (merged) cells.
Hvis eksempelvis A3:F3 er en merged cell, så opfatter excel kun værdien og cellen A3. For at komme videre skal jeg have en løsning der kan registrere at A3:F3 er en merged cell og unmerge cellen og efterfølgende kopiere den orginale værdi ud på de nye unmerged cells. Da værdien kun vil fremkomme i A3 og B3:F3 vil være tomme.
Ideelt set ville jeg have excel til at dele den oprindelige værdi med antallet af celler og indsætte denne i de nye celler. Altså hvis den oprindelige værdi var 120 i den A3:F3 merged celle, så skulle excel unmerge denne til 6 indviduelle celler og give dem værdien 20 (120 / 6).
Kalenderfunktionen vil først blive aktuel i en løsning der efterfølgende kan allokere hvilken måned de enkelte uger tilhører.
Mange tak for input og håber der er flere som kan være behjælpelige :)
Med ovenstående kode har jeg nu fået excel til at splitte merged cells og kopiere den originale værdi ud til de nye celler. Nu mangler jeg dog at tilføje lidt fleksibilitet, så at den også kan tælle antallet af nye celler. Nogen idé til hvordan jeg løser dette?
jeg er ikke helt sikker på hvad du mener, men denne kode trækker data ud fra merged celler i ark 2012 og skriver dem i samme adresser på aktive ark.
Sub test() Dim SamletCelle As Range With ThisWorkbook.Sheets("2012") For Each SamletCelle In .UsedRange If SamletCelle.MergeCells Then Range(SamletCelle(1, 1).Address).Value = SamletCelle(1, 1) Next End With
Jeg har lavet følgende kode, men kan ikke få den til at springe over celler der ikke indeholder tal, altså merged celler med tekst.
Det er sikkert langt fra den mest optimale kodning, men det virker. Sort of :D
Den kopierer nu det orginale ark, beder brugeren om at identificere området indeholdende tal der skal deles, og undersøger herefter dette område for merged celler. Den tæller hvor mange celler en merged celle består af og deler det samlede beløb med dette. Så ledes værdien allokeres korrekt. Problemet er dog stadig at den også ændrer celler med tekst?
Jeg er ret sikker på det er fordi jeg ikke helt forstår håndteringen af range. Håber du/i kan være behjælpelige på mit storm p projekt :)
Sub unmerge()
Dim SamletCelle, AngivRange, NyeCeller As Range, Antal As Integer, Beloeb
If IsNumeric(Trim(SamletCelle(1, 1))) Then ' i en merged celle er værdien altid i (1, 1), så man behøver ikke at unmerge Beloeb = Val(Trim(SamletCelle(1, 1)))
' NyeCeller.Value = Beloeb / Antal' forstår ikke lige meningen
For Each SamletCelle In AngivRange If SamletCelle.MergeCells Then Antal = SamletCelle.Columns.Count If IsNumeric(Trim(SamletCelle(1, 1))) Then ' i en merged celle er værdien altid i (1, 1), så man behøver ikke at unmerge Beloeb = Val(Trim(SamletCelle(1, 1))) ' NyeCeller.Value = Beloeb / Antal' forstår ikke lige meningen Else Beloeb = "Not number" End If End If Next SamletCelle
Trim funktionen var lige hvad jeg manglede, og tak for dine kommentarer. Beloeb / Antal bruger jeg til at angive den opdelte værdi til de nye celler. Altså hvis der stod 1 million i en merged celle der "fyldte" 4 celler, så vil der nu stå 250k i hver af de fire nye celler.
Du må meget gerne smide et svar, og endnu en gang tusind tak for hjælpen! :)
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.