• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Hücre Tanıma ve işlem yapma

Katılım
25 Aralık 2008
Mesajlar
14
Excel Vers. ve Dili
2007
Merhabalar forumda araştırma yaptım ama ilgili bir başlık bulamadım.
resimdeki gibi

sayfa1 sayfa2 sayfa3 diye giden bir çalışma kitabım var

Q1vB83.jpg


her sayfada resimdeki gibi tablolar var

fakat örneğin fatma doğanın bilgileri sayfa 1 de 5.satırda iken
sayfa 2 de 4.satırda

ben bir icmal sayfası alıp sayfa1den sayfa x e kadarki tablodaki verileri isimlere göre doğru adetleri verecek şekilde toplatmak istiyorum.

excelin bir hücredeki ismi tanıyıp o ismin yanındaki hüceredeki adetleri toplatma gibi bir fonksiyonu var mıdır. nasıl bir teknik ile yapılabilir.

yardımlarınızı bekliyorum
 
. . .

Her sayfada isimler tek mi yoksa birden fazla satırda olma durumu var mı ?

. . .
 
hazırlayacağım bir tabloda bu olasılık var yani sayfa1 den sayfa x e aynı isimde birden fazla satır olacak

ama şimdilik acil olan tablo için her sayfadaki satırlarda aynı isimden sadece bir tane olacak

varsa eğer iki durumdaki çözüm çok işime yarayacaktır.

ilginiz için teşekkürler
 
. . .

Dosyanız ektedir.


...::: Ekli Dosyayı İndirmek İçin Linki Tıklayınız :::...
https://yadi.sk/d/WmUZpc3wZCRRj

İşlem Sonucu:
do.php


Kod:
Sub KOD()
Application.ScreenUpdating = False

Dim i As Integer, a As Integer, x As Integer
Dim si As Worksheet
Set si = Sheets("İCMAL")

si.Range("A:B").ClearContents
si.Range("A1").Value = "Ad Soyad"
si.Range("B1").Value = "Toplam"

For i = 1 To Sheets.Count
If Sheets(i).Name <> "İCMAL" Then
Sheets(i).Range("A1:A" & Sheets(i).Cells(Rows.Count, 1).End(3).Row).Copy _
si.Cells(si.Cells(Rows.Count, 1).End(3).Row + 1, "A")
End If
Next i

si.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo

For x = 2 To si.Cells(Rows.Count, "A").End(3).Row
For a = 1 To Sheets.Count
If Sheets(a).Name <> "İCMAL" Then
topla = topla + WorksheetFunction.SumIf(Sheets(a).Range("A:A"), si.Cells(x, "A"), Sheets(a).Range("B:B"))
End If
Next a
si.Cells(x, "B") = topla
topla = Empty
Next x

Application.ScreenUpdating = True
MsgBox " B i t t i "
End Sub

. . .
 

Ekli dosyalar

çok teşekkür ederim. elinize sağlık istediğim gibi olmuş.
bir bilgi daha almak isterim. anladığım kadarı ile bu tarz işlemleri makro kullanmadan formüller ile yapamıyoruz. formüller yetersiz kalıyor.

ben c1 sütununa bir işlem adeti daha ekleyip bunuda hesaplattırmak istiyorum yazdığınız kodlara girerek b sütun için yazdığınız kodları kopyalayıp c değişkenine tanımladım fakat olmadı

c sütununu da işleme dahil etmek için kodu nasıl düzenlemeliyiz. sanırım makro yazmayı öğreneceğim işime çok yarayacak kodlamalar yapılabilir.

şimdiden teşekkür ederim
 
tekrar merhabalar ilk yaptığınız ve gönderdiğiniz tabloda ikinci bir adet hesaplama sütunu haricinde aşağıdaki gibi bir çalışma kitabına nasıl uyarlayabiliriz makroyu

http://s3.dosya.tc/server27/V4AOoc/adetler.xlsx.html böyle bir dosya yapmak istiyorum bu tablo düzenine göre makroyu nasıl yazarsınız mesela bende örnek alabilir sanırım yazacağınız şekle göre

tekrar teşekkür ederim.
 
çok teşekkür ederim. elinize sağlık istediğim gibi olmuş.
bir bilgi daha almak isterim. anladığım kadarı ile bu tarz işlemleri makro kullanmadan formüller ile yapamıyoruz. formüller yetersiz kalıyor.

ben c1 sütununa bir işlem adeti daha ekleyip bunuda hesaplattırmak istiyorum yazdığınız kodlara girerek b sütun için yazdığınız kodları kopyalayıp c değişkenine tanımladım fakat olmadı

c sütununu da işleme dahil etmek için kodu nasıl düzenlemeliyiz. sanırım makro yazmayı öğreneceğim işime çok yarayacak kodlamalar yapılabilir.

şimdiden teşekkür ederim
. . .

5 nolu mesaj için:

C sütunu ayrı toplanacak bir alan değil mi.

Kod:
Sub KOD()
Application.ScreenUpdating = False

Dim i As Integer, a As Integer, x As Integer
Dim si As Worksheet
Set si = Sheets("İCMAL")

[COLOR="blue"]si.Range("A:C").ClearContents[/COLOR]
si.Range("A1").Value = "Ad Soyad"
si.Range("B1").Value = "Toplam"
[COLOR="Blue"]si.Range("C1").Value = "Toplam2"[/COLOR]

For i = 1 To Sheets.Count
If Sheets(i).Name <> "İCMAL" Then
Sheets(i).Range("A1:A" & Sheets(i).Cells(Rows.Count, 1).End(3).Row).Copy _
si.Cells(si.Cells(Rows.Count, 1).End(3).Row + 1, "A")
End If
Next i

si.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo

For x = 2 To si.Cells(Rows.Count, "A").End(3).Row
For a = 1 To Sheets.Count
If Sheets(a).Name <> "İCMAL" Then
topla = topla + WorksheetFunction.SumIf(Sheets(a).Range("A:A"), si.Cells(x, "A"), Sheets(a).Range("B:B"))
[COLOR="blue"]topla2 = topla2 + WorksheetFunction.SumIf(Sheets(a).Range("A:A"), si.Cells(x, "A"), Sheets(a).Range("C:C"))[/COLOR]

End If
Next a
si.Cells(x, "B") = topla
[COLOR="blue"]si.Cells(x, "C") = topla2[/COLOR]

topla = Empty
[COLOR="Blue"]topla2 = Empty[/COLOR]
Next x

Application.ScreenUpdating = True
MsgBox " B i t t i "
End Sub

. . .
 
Son düzenleme:
şimdi anladım topla2 diye bir tanımlama yapılması gerekiyor.
makro yazma konusuna girmek istiyorum. sanırım bir kitap alıp bu konuya eğileceğim.

elinize sağlık teşekkür ederim.
 
hüseyin çoban bey son bir şey rica edebilir miyim acemi olduğum için epey uğraştım ama yapamadım mesela bu makrodaki fonsiyonu çalıştırıken yapacağım diğer değişik tablolara uyarlamak istiyorum

mesela A1 Sutününda ad soyad var
b1 de toplam1
c1 de toplam2

ama başka bir tabloda bu makroyu çalıştırım

a1 e sıra no sütunu açıp
sırayla b1 c1 ve d1 e taşımak istiyorum işlem yaptıracağım sütunları böylece
a1 de işlem yaptırmayıp b1 c1 d1 üzerinden işlem yaptırmak için nasıl düzenlemeliyim makroyu

tekrar teşekkür ederim.
 
yalnız dikkat ettimde topla2 fonksiyonunda bir hata var
mesela ilk satırdaki ismin topla iki değerini sayfa1 de bir arttırıyorum icmalde makroyu çalıştırınca topla 2 sütünunda birinci satır dışındaki tüm satırlardaki personelin topla2 değerleri 1 artacak şekilde işlem yapıyor. başka bir ismin topla2 değerine sayı girip makroyu çalıştırdığımda icmaldeki tüm topla 2 satırına ekleme yapıyor gibi
 
. . .

Tablonun son halini ekleyin, inceleyeyim.
Birde hatalı işlemi üzerinde gösteriniz.

İlave:
topla2 komutunu sonrada ilave ettiğimiz için empty yapmamışım.
topla = Empty satırının altına
topla2 = Empty ilave edilmeli. (kodları güncelledim)

. . .
 
Son düzenleme:
Geri
Üst