Excel'de birden çok sütuna göre nasıl TOPLA


2

İki sütun tarih / saat (Excel'in mm/dd/yyyy hh:mmözel formatı olarak içe aktarır ) ve 1 veya 0 durumunu içeren virgülle ayrılmış bir dosyam var . Durum, açık veya kapalı olan bir ekipman parçasını temsil ediyor. Gün geçtikçe saat aşağı yukarı gösterecek bir grafik oluşturmaya çalışıyorum.

DÜŞÜNMEK:

1/1/2012 00:00, 1
1/1/2012 03:00, 0
1/1/2012 14:00, 1
1/3/2012 00:00, 0

Bu bana ekipmanın üç saat, on bir saat, daha sonra otuz dört saat (iki takvim günü boyunca) kadar olduğunu söyledi. Bununla birlikte, GÜN BAŞLANGIÇTA kaç saat yukarı ya da aşağı olduğumuzu gösteren bir grafik oluşturmak istiyorum.

DÜŞÜNMEK:

1/1 XXXXXXXXXXXXX-----------   (up 13, down 11)
1/2 XXXXXXXXXXXXXXXXXXXXXXXX   (up 24)

Bana göre, CURENDAR GÜNÜ DURUMUNDA DURUMA göre SAATS toplayan bir veri kümesi oluşturmam gerekiyor gibi görünüyor ... ama SUM(IF(SUMIF(...)))çalışmasını sağlamak için pivot tabla veya iç içe kombinasyon lezzetini bulamıyorum .

En sıkıntılı durum tarih değişikliklerini hesaba katmak ... yukarıdaki örneğime göre, 1/1/2012 gece yarısından itibaren saat 14: 00'de başlayan çalışma zamanım, 10 çalışma saatinin 1/1/2012 ve 24 ile toplandığını bilmem gerekiyor Çalışma saatleri 1/2/2012 ile toplanır.

Tarih toplamını yönlendirmek için takvim listesiyle bir şeyler yapabilirim, ancak daha sonra eşit olarak karşılaştırmak 01/01/2012için bir yola ihtiyacım var 01/01/2012 03:00. Çizgileri boyunca bir yol olmalı if(INTEGER-PORTIONS-OF-SERIAL-DATES-ARE-EQUAL,TOTAL-HOURS-IF-VALUE-IS_1,0)ama şu ana kadar hiçbir şey işe yaramadı.

Baska öneri? Bugün çoğu zaman bununla mücadele ediyordum ve yeni bir bakış açısına ihtiyacım var.

Teşekkürler

Yanıtlar:


4

OMGBBQ bu zorlu! Keşke bunu daha iyi açıklayabilseydim, ama lütfen yanımda ol.

Çözümüm, bazı ek gayrimenkuller gerektiriyor - 3 sütun tam olarak - ve bazı varsayımlara dayanıyor:

  1. Zaman damgası verilerinde, açıklandığı gibi bir açma / kapama düğmesi taklit eden alternatif 1 ve 0'lı sıralar bulunur (Aşağıdaki Resim 1'e bakınız).
  2. Zaman damgaları en eskiden en yeniye doğru düzenlenir.

görüntü tanımını buraya girin

Sadelik uğruna, bütün saatleri kullanıyorum. İsterseniz dakika düzeyinde zaman damgaları ekleyebilirsiniz rağmen.

Sütun E , her zaman damgasındaki gün için kalan saat sayısını izler. Bunu, gece yarısını geçen geçen süreleri "SPLIT" olarak kullandım.

ON / OFF Sütunlar

İşte ON sütunundaki formül:

=SUM(IF(AND($B3,A4<>"",INT($A4)=INT($A3)),($A4-$A3)*24,0),
     IFERROR(IF(AND($B3=1,INT($A3)<>INT($A4)),$E3,IF(AND($B2=1,INT($A3)<>INT($A2)),24-$E3,0)),0))

Bu formül iki değer ekler:

1. Giriş, günün son damgası değilse, anahtarın AÇIK olduğu saat sayısı; Aksi takdirde, 0.

2. Günün son damgasıysa , gece yarısına kadar kalan saatlerin sayısı VEYA günün ilk defa damgasıysa , gece yarısından bu yana geçen saatlerin sayısı .

OFF sütunundaki formül, Durum = 0 olup olmadığını kontrol etmesi dışında benzerdir.

=SUM(IF(AND(NOT($B3),B4<>"",INT($A4)=INT($A3)),($A4-$A3)*24,0),
     IFERROR(IF(AND($B3=0,INT($A3)<>INT($A4)),$E3,IF(AND($B2=0,INT($A3)<>INT($A2)),24-$E3,0)),$B3*($A3-INT($A3))*24))

DATE’yi zaman damgası sütunundan çıkarmak için, INT()işlevi kullandım . Excel, tarihleri ​​temsil etmek için tamsayıları ve saatleri temsil etmek için ondalık sayıları kullanır (bir günün veya 24 saatin bir kısmı). Örneğin 06/01/2012 18:00, eşittir 41061.75(gece yarısından sonra 18 saat, 18 / 24'tür, bu 0,75'tir). Bunun son paragrafınıza cevap verdiğine inanıyorum.

Saatleri Konsolide Etmek

İşte Hours ON sütunundaki formül (Aşağıdaki Resme bakınız). Bu bir dizi formülüdür, bu nedenle Ctrl+ Shift+ tuşlarını kullanarak girmeniz Enterve sonra kopyalamanız gerekir:

=SUM((INT(stamps)=$G3)*hours_on)

In KAPALI Saat sütununda:

=SUM((INT(stamps)=$G3)*hours_off)


stampsBir Menzil refering Zaman Damgası (Sütun aralığı A bizim örneğimizde)
hours_onbir Menzil bahsetmektedir AÇIK aralığında (Sütun C )
hours off bir Menzil bahsetmektedir KAPALI aralığında (Sütun D )

Grafik

Her tarih için ON ve OFF saatlerinin sayısı 24'e kadar çıkmaktadır.

görüntü tanımını buraya girin

Formülleri ve çalışma kitabını incelemek isterseniz, işte bir kopyası: http://db.tt/KZgH7SFV


2

Kaze'nin önerisine göre A3: A24'te zaman damgaları ve B3: B24'de durum olduğunu varsayarak ON, bu formülle D3'de bir tarih için [ondalık] saat alabilirsiniz.

=(LOOKUP(D3+1,A$3:B$24)-SUMPRODUCT((INT(A$3:A$24)=D3)+0,MOD(A$3:A$24,1),B$3:B$24*2-1))*24

"yardımcı" sütun yok gerekli ....


1

Güzel değil, ama işte bir çözüm:

İki sütununuzdan sonra, gün olarak tanımlanan üçüncü bir sütun ekleyin ([datecolumn])

       A       B    C  D
   ---------------------
1 | 1/1/2012 00:00, 1, 1
2 | 1/1/2012 03:00, 0, 1
3 | 1/1/2012 14:00, 1, 1
4 | 1/3/2012 00:00, 0, 3
 ...
99| 1/31/2012 11:23, 1,31

Daha sonra, olarak tanımlanmış toplam sütunlar yapabilirsiniz.

sumif(D1:D99, 1, C1:C99)

Yukarıdaki durumda, 1 değerinin toplamını yalnızca D sütunu (önceden tarih gününün "Gün" kısmı olarak tanımlanmış, 1 olduğunda) 1 olduğunda gösterecektir. Bu formülü ayın her günü için tekrarlayın. (ben o kadar deli değilim), ve değerlerine sahip olmalısın.

1. ayın toplam saati

sumif(D1:D99, 1, C1:C99)

Ayın 2'sindeki saatlerin toplamı

sumif(D1:D99, 2, C1:C99)

Ayın 3'ünde bulunan saatlerin toplamı

sumif(D1:D99, 3, C1:C99)

ve bunun gibi...


1
Bunu düşünmüştüm, ancak tarih çizgisini geçmenin formül bir yolunu bulamıyorum ... bu durumda, 1/1/12 tarihinde başlayan 34:00 saati 1/1 / 10: 00'a bölerek / 1/2/2012 tarihinde 12 ve 24:00 saatleri arasında. Gece yarısı benzer veriyi kırmak için ek satırlar ekleyebilir ve yeni bir kayıt ekleyebilirdim, ancak bu otomatik kütüğün amacını yendi. :)
dwwilson66

Çözümümün tarih satırı sorununu çözdüğüne eminim. Sumif (), D1: D99'u belirli bir değer için (tarihin gün kısmı) kontrol eder ve doğru olursa, uygun alanları toplar.
nageeb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.