- Katılım
- 6 Ocak 2010
- Mesajlar
- 2,224
- Excel Vers. ve Dili
- İŞ: 2021 Win Eng
Merhaba.
Diğer sütunlarda farklı veri ve formüller olmak üzere AA sütununda (27 no.lu sütun) 95000-120000 arası değişen satırda veri bulunan bir dosyam var. Bu satırların önemli bir kısmı boş ve en altta 3000-10000 arası dolu hücre var.
Yapmak istediğim, AA2 hücresindeki formülü AA3 hücresinden başlayarak sütundaki ilk dolu hücreye kadar kopyalamak. Bunun için aşağıdaki gibi bir macro var. Toplam kayıt sayısı değiştiği için kopyalanacak aralık'ın satır değerini "toplam satır sayısı" - "dolu olan satır sayısı" olarak vermek istedim. Fakat makro çalıştığında A sütunundan elde ettiğim SonSat değerine dolu olan hücreler dahil kopyalamakta.
Önce CountBlank("AA3:AA & SonSat") ile başlamıştım. Hatalı olunca bu tanımlara girdim.
2003 Eng ve 2007 Eng kullanıyoruz.
Varsa görüş ve önerilerinizi rica ederim.
Düzeltme:
Sayın Evren Gizlen'in başka bir konuda verdiği bir örnekten hareketle nerede hata yaptığımı anladım. Range ibaresini eklemek gerekiyormuş.
Bilvesile kendisine teşekkür ederim.
Diğer sütunlarda farklı veri ve formüller olmak üzere AA sütununda (27 no.lu sütun) 95000-120000 arası değişen satırda veri bulunan bir dosyam var. Bu satırların önemli bir kısmı boş ve en altta 3000-10000 arası dolu hücre var.
Yapmak istediğim, AA2 hücresindeki formülü AA3 hücresinden başlayarak sütundaki ilk dolu hücreye kadar kopyalamak. Bunun için aşağıdaki gibi bir macro var. Toplam kayıt sayısı değiştiği için kopyalanacak aralık'ın satır değerini "toplam satır sayısı" - "dolu olan satır sayısı" olarak vermek istedim. Fakat makro çalıştığında A sütunundan elde ettiğim SonSat değerine dolu olan hücreler dahil kopyalamakta.
Önce CountBlank("AA3:AA & SonSat") ile başlamıştım. Hatalı olunca bu tanımlara girdim.
2003 Eng ve 2007 Eng kullanıyoruz.
Varsa görüş ve önerilerinizi rica ederim.
Kod:
Sub x()
Dim SonSat As Long
Dim Dolu As Long
Dim Bos As Long
With ActiveSheet
SonSat = .Cells(.Rows.Count, "AA").End(xlUp).Row
[COLOR="red"]Dolu = Application.WorksheetFunction.Count("AA:AA")[/COLOR]
Bos = SonSat - Dolu
End With
Range("AA2").Copy
Range(Cells(3, 27), [COLOR="SeaGreen"]Cells(Bos, 27[/COLOR]).Select
Selection.pastespecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
Application.Wait Now + TimeValue("00:00:15")
End Sub
Düzeltme:
Sayın Evren Gizlen'in başka bir konuda verdiği bir örnekten hareketle nerede hata yaptığımı anladım. Range ibaresini eklemek gerekiyormuş.
Bilvesile kendisine teşekkür ederim.
Kod:
With ActiveSheet
SonSat = .Cells(.Rows.Count, "AA").End(xlUp).Row
'veya
'SonSat = .Cells.SpecialCells(xlCellTypeLastCell).Row
Dolu = Application.WorksheetFunction.Count([COLOR="Red"]Range[/COLOR](Cells(3, 27), Cells(SonSat, 27)))
Bos = SonSat - Dolu
End With
Son düzenleme:
