Gå til innhold

Excel - formel eller makro ?


Anbefalte innlegg

Hei,

Jeg sliter med å finne en formel eller makro i Excel som summerer verdien per time.

Den skal hoppe ned til neste time og gjøre det samme en gang til osv. 

Hvert kvarter kommer en ny verdi. Jeg ønsker å summere en sum per time.

For 11.01.2024 ønsker jeg automatisere summen av time 00 til 01 = sum 50 + 100 + 10 +90.

osv for de andre timene 11.01.2024 og så for alle timene i 12.01.2024

Forslag på å løse dette mottas med takk.:-)
 

11.01.2024 00:00 11.01.2024 00:15 50 Estimert
11.01.2024 00:15 11.01.2024 00:30 100 Estimert
11.01.2024 00:30 11.01.2024 00:45 10 Estimert
11.01.2024 00:45 11.01.2024 01:00 90 Estimert
11.01.2024 01:00 11.01.2024 01:15 10 Estimert
11.01.2024 01:15 11.01.2024 01:30 50 Estimert
11.01.2024 01:30 11.01.2024 01:45 100 Estimert
11.01.2024 01:45 11.01.2024 02:00 150 Estimert
11.01.2024 02:00 11.01.2024 02:15 500 Estimert
11.01.2024 02:15 11.01.2024 02:30 100 Estimert
11.01.2024 02:30 11.01.2024 02:45 150 Estimert
11.01.2024 02:45 11.01.2024 03:00 250 Estimert
11.01.2024 03:00 11.01.2024 03:15 300 Estimert
11.01.2024 03:15 11.01.2024 03:30 350 Estimert
11.01.2024 03:30 11.01.2024 03:45 400 Estimert
11.01.2024 03:45 11.01.2024 04:00 150 Estimert

 

mvh

ts

 

Lenke til kommentar
Videoannonse
Annonse
  • 1 måned senere...

Hei iuet,

En løsning er å omforme datasettet ditt fra langt format til bredt format. Det gjør det mye enklere å regne ut timesummen i regnearket.
Jeg kan ikke pivot-tabeller, så jeg har implementert en løsning i R. 

R kan lastes ned her: https://www.r-project.org/

RStudio IDE/RStudio Desktop (Open Source Edition) er en gratis men det er ikke nødvendig for mitt løsningsforslag.

(27. des. 2023 postet jeg et tilsvarende løsningsforslag her)

Spør om det noe i koden du lurer på! 

 

# #### START R KILDEKODEN ############

# NOTE: R kildekoden kan lagres i en R skriptfil, f.eks. `my_script.R`.
# Åpne skiptet i R og kjør hele skriptet på en gang eller kjør linje for linje.

# Programvare: R version 4.3.3 (2024-02-29 ucrt) -- "Angel Food Cake"

install.packages("tidyverse")

library(tidyverse)

# Jeg har tatt utgangspunkt i ditt datasett med 6 kolonner:

# DatoStart | TimeMinuttStart | DatoSlutt | TimeMinuttSlutt | Verdi | VerdiType
# -----------------------------------------------------------------------------
# 11.01.2024	00:00	11.01.2024	00:15	50	Estimert
# 11.01.2024	00:15	11.01.2024	00:30	100	Estimert
# 11.01.2024	00:30	11.01.2024	00:45	10	Estimert
# 11.01.2024	00:45	11.01.2024	01:00	90	Estimert
# 11.01.2024	01:00	11.01.2024	01:15	10	Estimert
# 11.01.2024	01:15	11.01.2024	01:30	50	Estimert
# 11.01.2024	01:30	11.01.2024	01:45	100	Estimert
# 11.01.2024	01:45	11.01.2024	02:00	150	Estimert
# 11.01.2024	02:00	11.01.2024	02:15	500	Estimert
# 11.01.2024	02:15	11.01.2024	02:30	100	Estimert
# 11.01.2024	02:30	11.01.2024	02:45	150	Estimert
# 11.01.2024	02:45	11.01.2024	03:00	250	Estimert
# 11.01.2024	03:00	11.01.2024	03:15	300	Estimert
# 11.01.2024	03:15	11.01.2024	03:30	350	Estimert
# 11.01.2024	03:30	11.01.2024	03:45	400	Estimert
# 11.01.2024	03:45	11.01.2024	04:00	150	Estimert

# Jeg har forenklet ditt eksempel ved å slette kolonnene: "DatoSlutt", "TimeMinuttSlutt", 
# "VerdiType".
# Din kolonne "TimeMinuttStart" har jeg delt opp i to nye kolonner: "TIME" og "MINUTT".

# Opprett ei csv-fil med følgende data, ikke ta med `# ` i starten av linjene:
# Gi fila navnet "data-long.csv", så lagrer du den i "C:/temp/".

# DATO,TIME,MINUTT,VERDI
# "11.01.2024",0,0,50
# "11.01.2024",0,15,100
# "11.01.2024",0,30,10
# "11.01.2024",0,45,90
# "11.01.2024",1,0,10
# "11.01.2024",1,15,50
# "11.01.2024",1,30,100
# "11.01.2024",1,45,150
# "11.01.2024",2,0,500
# "11.01.2024",2,15,100
# "11.01.2024",2,30,150
# "11.01.2024",2,45,250
# "11.01.2024",3,0,300
# "11.01.2024",3,15,350
# "11.01.2024",3,30,400
# "11.01.2024",3,45,150

setwd("C:/temp")    # arbeidsmappe hvor csv-fila er.
getwd()    # sjekk sti

# Åpne datafila

data_long <- readr::read_csv(file="data_long.csv")

data_long

#> # A tibble: 16 × 4
#>    DATO        TIME MINUTT VERDI
#>    <chr>      <dbl>  <dbl> <dbl>
#>  1 11.01.2024     0      0    50
#>  2 11.01.2024     0     15   100
#>  3 11.01.2024     0     30    10
#>  4 11.01.2024     0     45    90
#>  5 11.01.2024     1      0    10
#>  6 11.01.2024     1     15    50
#>  7 11.01.2024     1     30   100
#>  8 11.01.2024     1     45   150
#>  9 11.01.2024     2      0   500
#> 10 11.01.2024     2     15   100
#> 11 11.01.2024     2     30   150
#> 12 11.01.2024     2     45   250
#> 13 11.01.2024     3      0   300
#> 14 11.01.2024     3     15   350
#> 15 11.01.2024     3     30   400
#> 16 11.01.2024     3     45   150

# Så omformer datasettet til bredt format, dette formatet gjør det enklere 
# å beregne timesummen når du senere åpner csv-fila i regnearket.

data_wide <- data_long |>
  tidyr::pivot_wider(
    names_from = "MINUTT",
    values_from = "VERDI"
  )

data_wide

#> # A tibble: 4 × 6
#>   DATO        TIME   `0`  `15`  `30`  `45`
#>   <chr>      <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 11.01.2024     0    50   100    10    90
#> 2 11.01.2024     1    10    50   100   150
#> 3 11.01.2024     2   500   100   150   250
#> 4 11.01.2024     3   300   350   400   150

# Lagre `data_wide` som en csv-fil, som kan åpnes i regnearket.
# NB! Fjern `# ` i neste linje for å kunne lagre filen.
# readr::write_excel_csv(data_wide, "data_wide.csv")

# Nå kan du åpne `data_wide.csv` i regnearket å beregne timesummen.


# #### SLUTT PÅ MITT LØSNINGSFORSLAG ############


# Litt ekstra info:

# For å gå fra bredt format til langt format bruker du funksjonen `pivot_longer()`:

new_long <- data_wide |>
  tidyr::pivot_longer(
    cols = c(`0`, `15`, `30`, `45`),
    names_to = "MINUTT",
    values_to = "VERDI"
  )

new_long

# NB! Fjern `# ` i neste linje for å kunne lagre filen.
# readr::write_excel_csv(new_long, "new_long_data.csv")

# #### SLUTT R KILDEKODE ########

 

 

new_long_data.csv data_wide.csv my_script.R data_long.csv

skjermdump-regneark-v2.png

Endret av toiota
(2) Jeg regnet først snittet, skulle ha vært summen, (1) Formatering
Lenke til kommentar
Hogstad Rådgivning skrev (19 timer siden):

Morsom utfordring. Scan med litt tillegg er en mulighet her. Litt lang forklaring. Så jeg laget en video på hvordan jeg ville løst det: 

 

Når du har timen, kan du også gjøre det på den enkle måten. Spol frem til ca 5.30. Bytt ut Maks.Hvis.Sett med Summer.Hvis.Sett. Så er du i mål.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...