2016-04-12 19 views
0

benim ev ısıtma ünitesinin maliyeti modellemek çalışıyorum. Saatlik 3.15 yıllık verilere sahibim. Saat başı maliyet, günlük maliyet, aylık maliyet ve yıllık maliyet hesapladım. Daha fazla veri eklediğimde işlemi kolaylaştırmak için CostPerDay ve diğeri CostPerMonth olarak adlandırılan iki VBA işlevi yazmak istiyorum. Verilerimin bir resmini ekledim. Veri"Ayın başına maliyet"

enter image description here

Ben Günlük Maliyet yazdığı fonksiyonu

Resim geçerli:

=SUM(OFFSET($M$18,(ROW()-18)*24,0,24,1)) 

ben Aylık Maliyet yazdığı fonksiyonudur:

Jan-13 =SUM(OFFSET($P$18,(ROW()-18)*31,0,31,1)) 
Feb-13 =SUM(OFFSET($P$49,(ROW()-19)*28,0,28,1)) 
Mar-13 =SUM(OFFSET($P$77,(ROW()-20)*31,0,31,1)) 
Etc... 

Tüm veri aralığına ihtiyacınız varsa:

Cost Per Hour - M18:M27636 
Cost Per Day - P18:P1168 
Cost Per Month - S18:S55 
Average Cost Per Month - V18:V29 

Ben büyük ölçüde herhangi bir yardım takdir ediyorum !!!

Denediğim şey budur. Gördüğünüz gibi ben VBA için yeniyim. İlk denemede, verilerin elektronik tabloda nerede bulunduğunu ve hesaplamada hangi hücreyi istediğimi tanımlamak için Dim'i kullanmaya çalışıyordum. Sıkışmış durumdayım çünkü =SUM(OFFSET($M$18,(ROW()-18)*24,0,24,1)) işlevini VBA'ya ekleyemedim. Daha sonra, ile değiştirerek sabit kodlanmış $M$18'dan kurtulmaya çalışıyordum. Ama hiçbiri işe yaramadı.

Ben diyalog kutuları ile oynuyordum ikincisi, ama ben bunları kullanmak istiyorum sanmıyorum. Üçüncü girişimde

ben Aylık Maliyet hesaplamaya çalışıyordu. Anlamadım çünkü onu kaydetmedim. Ayı, aydaki gün sayısıyla eşleştirmek için SUMIFS kullanıyordum. Bu benim en yakın denemem olabilirdi ama hala işe yaramadı.

Function CostPerDay(BeginningCostPerDay, OutputCell) 
    Dim BeginningCostPerDay, OutputCell 
     BeginningCostPerDay = WorksheetFunction.DSum() 
     OutputCell = ActiveCell.Offset(3, -3).Activate 
End Function 

Function CostPerDay1() 
    Dim myValue1 As Variant, myValue2 As Variant 
     myValue1 = InputBox("Where do you want the data put?") 
     myValue2 = InputBox("What is the beginning Cost Per Day") 
      Range("myValue1").Value = myValue1 
      Range("myValue2").Value = myValue2 

End Function 
+0

Neden [ÇOKETOPLA fonksiyonu] (https://support.office.com/en-us/article/SUMIFS-function-C9E748F5-7EA7-455D-9406-611CEBCE642B)? [AVERAGEIFS işlevi] (https://support.office.com/en-us/article/AVERAGEIFS-function-48910C45-1FC0-4389-A028-F7C5C3001690)? – Jeeped

+0

Gün başına Maliyet için SUMIFS kullanarak her 24 hücreyi nasıl toplamlarım? –

+0

'= SUM (INDEX (M: M, (SAĞ (1: 1) -1) * 24 + 18): INDEX (M: M, (SAĞ (1: 1) -1) * 24 + 41)) uçucu olmayan [INDEX fonksiyon] kullanır (https://support.office.com/en-us/article/index-function-0ee99cef-a811-4762-8cfb-a222dd31368a) yerine uçucu [OFFSET fonksiyon] arasında (HTTPS : //support.office.com/en-us/article/OFFSET-function-b3958b36-c30b-4fc3-979e-9b9bbfdcf592). – Jeeped

cevap

0

Örneğin A1 hücresinde 1 ile başlayan bir yardımcı sütunu eklediyseniz. İkinci sıra (A2) = Olsaydı (A1 = 24,1, A1 + 1). Sütun B, saatlik verilere sahip olacaktır. C sütunu veya C1, = If (ve (A1 = 24, A2 = 1), B1, B1 + B2)) dır. Test etmedim, ama bence bu belki de bir çimdikle çalışmalı.

İlgili konular