- Katılım
- 2 Aralık 2013
- Mesajlar
- 401
- Excel Vers. ve Dili
- Microsoft Office Standard 2013-Türkçe
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Merhabalar,
Hata nerede? Zaten doğru hesaplamışsınız. Olması gereken nedir?
Sayın @relaxim
Sorun yeşil dolgu ile gösterdiğim yerlerdeki formülün gerçek değerleri göstermemesi. Örnek H20 hücresindeki değerin 70 saat olması gerekirken 26 saat göstermesi.
Sayın @relaxim bir öneride bulunmuş olumlu olumsuz dönüş yapabilirdiniz.Merhaba,
7+3,5 şeklinde veri girerseniz o artık metinsel ifade olduğundan işleme dahil etmez. Onun yerine =7,5+3,5 olarak girerseniz; sonuç 11 görünür ve toplamı alır.
Merhaba,
7+3,5 şeklinde veri girerseniz o artık metinsel ifade olduğundan işleme dahil etmez. Onun yerine =7,5+3,5 olarak girerseniz; sonuç 11 görünür ve toplamı alır.
=TOPLA.ÇARPIM((SOLDAN(H16:H19;BUL("+";H16:H19;1)-1)+PARÇAAL(H16:H19;BUL("+";H16:H19;1)+1;UZUNLUK(H16:H19))))
Deneyiniz. 7,5+3,5 olan kısımları toplayabilirsiniz.
Belki çözüm olmaz ama fikir verebilir. Geliştirilebilir.
Kod:=TOPLA.ÇARPIM((SOLDAN(H16:H19;BUL("+";H16:H19;1)-1)+PARÇAAL(H16:H19;BUL("+";H16:H19;1)+1;UZUNLUK(H16:H19))))
Private Sub Worksheet_Change(ByVal Target As Range)
h20 = Range("H20").Value
If Target.Column <> 8 Or Target.Row < 7 Or Target.Row > 19 Then Exit Sub
say = WorksheetFunction.CountIf(Range("H" & Target.Row & ":H" & Target.Row), "*" & "+" & "*")
If say > 0 Then
x = Left(Target.Value, WorksheetFunction.Find("+", Target.Value) - 1) * 1
y = Right(Target.Value, WorksheetFunction.Find("+", Target.Value) - 1) * 1
t = x + y
Else
Z = Target.Value
End If
Range("H20").Value = t + Z + h20
End Sub
Merhaba,
G20: (dizi formülüdür.)
Kod:=TOPLA(EĞERHATA(0+PARÇAAL(YERİNEKOY(G7:G19;"+";YİNELE(" ";10));10*({0;1})+1;10);0))
.
Dosyanız ekte.
Dosyanızda Macro4 fonksiyonlarından EVALUATE fonksiyonu kullanılmıştır.
Ad tanımlamalarına bakarsanız orada görürsünüz.
Değer taraftan yaptığım bir sütun ve bir satır çalışması kırmızı olarak gösterilmiştir. Onların rengini beyaz yapıp gizleyebilirsiniz.
Not: Mümkünse boş yerlere 0 kullanınız ki; formülün hata verme olasılığını ortadan kaldırabiliriz. 0'ları da gizlemek mümkün.
.
Makro ile yapılmak istenirse H sütunu için örnek,
Hücreye yazdıkça toplama işlemi yapar.
Kod:Private Sub Worksheet_Change(ByVal Target As Range) h20 = Range("H20").Value If Target.Column <> 8 Or Target.Row < 7 Or Target.Row > 19 Then Exit Sub say = WorksheetFunction.CountIf(Range("H" & Target.Row & ":H" & Target.Row), "*" & "+" & "*") If say > 0 Then x = Left(Target.Value, WorksheetFunction.Find("+", Target.Value) - 1) * 1 y = Right(Target.Value, WorksheetFunction.Find("+", Target.Value) - 1) * 1 t = x + y Else Z = Target.Value End If Range("H20").Value = t + Z + h20 End Sub
Sayın @Ömer
Çözüm öneriniz yatay olan G:20 ile L:20 hücrelerinde doğru sonucu veriyor. M:7 ile M19 arası dikey hücreler içinde formül paylaşır mısınız.
Yatayda kullanırken;
{0;1}
Diziyi yukarıdaki yazım yerine aşağıdaki gibi yazmanız yeterli olacaktır.
{0\1}