Avatar billede cfer Nybegynder
26. august 2004 - 00:49 Der er 15 kommentarer og
1 løsning

Indsætte data i næste ledige linje del 2

I fortsættelse af spørgsmål http://www.eksperten.dk/spm/532688

Er jeg kommet til en ny udfordring, i mit skema over tidsforbrug pr. opgave.

Kabbak gav et glimrende forslag til kode der indsætter data på næste ledige linje i ark2. Det løste til fulde behovet.

På baggrund af disse data beregner jeg  tidsforbrug pr. opgave samt (og ikke mindst) det gennemsnitlige tidsforbrug til dato. Til dette har jeg lavet følgende formel i ark2 - kolonne  L,
=HVIS(A6=0;0;SUM($H$3:H6)/K6)
Denne giver celleværdien 0, såfremt linjen endnu ikke er benyttet. Såfremt cellerne i linjen er udfyldt vil det gennemsnitlige tidsforbrug til dato fremkomme. Men placering af aktuelt facit flytter sig en linje ned hver gang der tilføjes registrering af en opgave.

Jeg vil gerne have N6 i ark1 til at pege på aktuelt facit. Det kunne selvfølgelig gøres med noget der ligner det her: =HVIS(ark2!L11>0;ark2!L11;HVIS(ark2!L10>0;ark2!L10;HVIS(ark2!L9>0;ark2!L9;HVIS(ark2!L8>0;ark2!L8;…

Problemet er bare at der kan forekomme op til 1000 linjer pr ark så det bliver en noget lang HVIS-formel, såfremt jeg skal løse det på den måde…..

Nogen der har et godt bud.
Avatar billede cfer Nybegynder
26. august 2004 - 03:44 #1
Har nu læst videre herinde og fundet frem til at jeg nok skal. Bruge:

Public Function clastInColumn(rLast As Range) As Variant
clastInColumn = rLast.Parent.Cells(65536, rLast.Column).End(xlUp).Value
End Function

Men jeg kan ikke får det til at virke rigtigt. nok fordi at alle cellerne i kolonnen indeholder formlen =HVIS(A6=0;0;SUM($H$3:H6)/K6)
Avatar billede kabbak Professor
26. august 2004 - 08:12 #2
Hvor laver du udregningen, hvis det er i den sidste linie der er overført, kan den sættes ind i koden der overfører data.

Vis lige din nuværende kode, og fortæl hvor du vil have udregningen.
Avatar billede cfer Nybegynder
26. august 2004 - 20:28 #3
Hej kabbak,

Ark1 – omdøbt til INDTAST har flg. Indtastningsfelter:
A6 – dato
B6 – opgavenummer
C6 – postnummer
D6 – tid for opgave oprettet
E6 – tid for opgave start
F6 – fremmetid
G6 – opgave afsluttet

H6 – Totaltid fra oprettet til fremme =HVIS(F6>D6;F6-D6;F6+1-D6)
I6 – Køretid =HVIS(F6>E6;F6-E6;F6+1-E6)
J6 – Tidsforbrug på stedet =HVIS(G6>F6;G6-F6;G6+1-F6)

Så langt så godt. Med følgende makro (tak for den) smides data over i ark2 – omdøbt til DATA

TRow = (Sheets("Data").Range("A65536").End(xlUp).Row) + 1
  Sheets("Data").Range("A" & TRow) = Range("A6")
  Sheets("Data").Range("B" & TRow) = Range("B6")
  Sheets("Data").Range("C" & TRow) = Range("C6")
  Sheets("Data").Range("D" & TRow) = Range("D6")
  Sheets("Data").Range("E" & TRow) = Range("E6")
  Sheets("Data").Range("F" & TRow) = Range("F6")
  Sheets("Data").Range("G" & TRow) = Range("G6")
  Sheets("Data").Range("H" & TRow) = Range("H6")
  Sheets("Data").Range("I" & TRow) = Range("I6")
  Sheets("Data").Range("j" & TRow) = Range("J6")
Range("A6:G6").Select
    Selection.ClearContents
    Range("A6").Select
 
End Sub

I DATAarket = ark2, er følgende formler indsat i:
Kolonne L
=HVIS(A4=0;"";SUM($H$3:H4)/K4)
Kolonne M
=HVIS(A4=0;"";SUM($I$3:I4)/K4)
Kolonne N
=HVIS(A4=0;"";SUM($J$3:J4)/K4)

Disse formler har jeg rullet 1000 linjer ned  – og nederste udfyldte linje viser gennemsnittet til dato = aktuelt facit.
Måske ikke den optimale måde at løse det på, men det var den måde jeg kunne finde ud af det og det virker ;-)

Jeg ønsker at bringe disse aktuelle facit til INDTAST-arket = ark1 i til cellerne N6, P6 og R6

Jeg forestiller mig at en løsning er at formlerne i DATA kolonnerne L, M og N på en eller anden måde skal genereres løbende og så vil  clastInColumn tricket virke, men det ligger ud over mine evner.
Avatar billede cfer Nybegynder
26. august 2004 - 20:29 #4
Ser lige at eksperten konverterede mine bindestreger til –
Avatar billede kabbak Professor
26. august 2004 - 20:58 #5
hvad har du i K kolonnen i arket Data. ?
Avatar billede cfer Nybegynder
26. august 2004 - 21:08 #6
Nå ja - det glemte jeg. K kolonnen indeholder fortløbende numre fra 1... (starter i linje 3). Bruges blot til at dividere summen af posteringer med antallet af posteringer for at finde gennemsnit.
Eksempel:
på linje 6 finder formlen i kolonne L summen af $H3:H6 og dividerer med K6 som er tallet 4 (antallet af ydfyldte linjer)
Avatar billede kabbak Professor
26. august 2004 - 21:21 #7
Private Sub CommandButton1_Click()
trow = (Sheets("Data").Range("A65536").End(xlUp).Row) + 1
  Sheets("Data").Range("A" & trow) = Range("A6")
  Sheets("Data").Range("B" & trow) = Range("B6")
  Sheets("Data").Range("C" & trow) = Range("C6")
  Sheets("Data").Range("D" & trow) = Range("D6")
  Sheets("Data").Range("E" & trow) = Range("E6")
  Sheets("Data").Range("F" & trow) = Range("F6")
  Sheets("Data").Range("G" & trow) = Range("G6")
  Sheets("Data").Range("H" & trow) = Range("H6")
  Sheets("Data").Range("I" & trow) = Range("I6")
  Sheets("Data").Range("j" & trow) = Range("J6")
  Sheets("Data").Range("K" & trow) = trow - 2
  Sheets("Data").Range("L" & trow).FormulaR1C1 = "=IF(RC[-11]=0,"""",SUM(R3C8:RC[-4])/RC[-1])"
  Sheets("Data").Range("M" & trow).FormulaR1C1 = "=IF(RC[-12]=0,"""",SUM(R3C9:RC[-4])/RC[-2])"
  Sheets("Data").Range("n" & trow).FormulaR1C1 = "=IF(RC[-13]=0,"""",SUM(R3C10:RC[-4])/RC[-3])"
  Range("N6").FormulaR1C1 = "=Data!R[" & trow - 6 & "]C[-2]"
  Range("P6").FormulaR1C1 = "=Data!R[" & trow - 6 & "]C[-3]"
  Range("R6").FormulaR1C1 = "=Data!R[" & trow - 6 & "]C[-4]"
Range("A6:G6").Select
    Selection.ClearContents
    Range("A6").Select
End Sub
Avatar billede kabbak Professor
26. august 2004 - 21:22 #8
med alle formler, så behøver du ikke selv at trække dem på atket Data
Avatar billede kabbak Professor
26. august 2004 - 21:23 #9
atket = Arket
Avatar billede cfer Nybegynder
26. august 2004 - 21:35 #10
Det er jo mildest talt GENIALT!!!
Det virker lige som jeg havde ønsket.
Mange tak!

Hvis jeg forstår kommentaren fra 21:22:46 kan jeg slette formlerne i
I DATAarket = ark2, Kolonne L, M, og N?
og arket vil altid tilpasse sig antallet af indtastninger?
Avatar billede kabbak Professor
26. august 2004 - 21:37 #11
yes og kolonne K, men kun for nye linier, der hvor der er data må du ikke.
og et svar
Avatar billede cfer Nybegynder
26. august 2004 - 21:45 #12
Alletiders kabbak.

Bare til udviddelse af min fattige horisont. Er det muligt at lave en søgning på postnummer, således at man indtaster er postnummer, kører en makro og får de gennemsnitlige tider på opgaver udført i dette postnummer til dato?
Hvis det kan lade sig gøre opretter jeg det som nyt spørgsmål.
Avatar billede kabbak Professor
26. august 2004 - 21:59 #13
ja, det vil jeg mene, hvilken værdi skal du have gennemsnittet på
Avatar billede kabbak Professor
26. august 2004 - 22:29 #14
=SUM.HVIS(Data!C:C;C6;Data!J:J)/TÆL.HVIS(Data!C:C;C6)

dette er gennemsnit Tidsforbrug på stedet

Smid den ind i en celle på indtastningsarket, så kommer den med svar når der er indtastet et postnummer i C6
Avatar billede cfer Nybegynder
27. august 2004 - 00:10 #15
Ja det er smart - og jeg lærer ret meget af det her.
Jeg ændrede C6 til p18, hvor man taster postnummeret ind (for at seperere det fra selve inddateringen.

Oprettede formlen i tre celler i linje 22, som hver laver SUM.HVIS / TÆL.HVIS i henholdsvis data!I:I  ,    Data!H:H  og Data!J:J

I en celle derunder har jeg indsat formlen =HVIS(ER.FEJL(N22);"FEJL - der ikke findes forekomster på postnummeret";"")

Nu begynder det at se ret "pro" ud :-)

Smid lige et svar til mig.
Avatar billede kabbak Professor
27. august 2004 - 09:22 #16
jeg har fået point. ;-))
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester