- Katılım
- 25 Ocak 2006
- Mesajlar
- 763
- Excel Vers. ve Dili
- 2019 tr
- Altın Üyelik Bitiş Tarihi
- 04-01-2024
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub analiz()
Application.ScreenUpdating = False
On Error Resume Next
Range("c20:t23").ClearContents
For i = 5 To 8
For k = 3 To 20
If Cells(i, k) <> "" Then
yazılacak = Cells(i, k)
ilk = k
For Z = k + 0 To 20
If Cells(i, Z) = yazılacak Then ikincisi = Z
Next Z
For yazz = ilk To ikincisi
Cells(i + 15, yazz) = yazılacak
Next yazz
End If
Next k
Next i
Application.ScreenUpdating = True
MsgBox "İşlem TAMAM.", vbInformation
End Sub
Sub kod()
Dim a As Integer, b As Integer
Dim dz As Variant
Dim yazkont As Boolean
Dim yaz As String
Range("C20:T23").ClearContents
dz = Range("C5:T8")
For a = LBound(dz) To UBound(dz)
For b = LBound(dz, 2) To UBound(dz, 2)
If dz(a, b) <> "" Then
yazkont = Not yazkont
yaz = dz(a, b)
End If
If yazkont = True Then dz(a, b) = yaz
Next
Next
Range("C20").Resize(UBound(dz), UBound(dz, 2)).Value = dz
End Sub
=EĞER(BAĞ_DEĞ_DOLU_SAY($C5:C5)=1;EĞER(C5="";B20;C5);EĞER(C5="";"";C5))
elinize bilginize sağlık, teşekkürler. geç cevap verdiğim için de kusuruma bakmayın lütfen.Merhaba,
Bir de aşağıdaki kodu deneyiniz...
Formül kullanmak isterseniz de C20'ye aşağıdaki formülü uygulayıp sağa ve aşağı çekerek çoğaltınız.Kod:Sub kod() Dim a As Integer, b As Integer Dim dz As Variant Dim yazkont As Boolean Dim yaz As String Range("C20:T23").ClearContents dz = Range("C5:T8") For a = LBound(dz) To UBound(dz) For b = LBound(dz, 2) To UBound(dz, 2) If dz(a, b) <> "" Then yazkont = Not yazkont yaz = dz(a, b) End If If yazkont = True Then dz(a, b) = yaz Next Next Range("C20").Resize(UBound(dz), UBound(dz, 2)).Value = dz End Sub
Kod:=EĞER(BAĞ_DEĞ_DOLU_SAY($C5:C5)=1;EĞER(C5="";B20;C5);EĞER(C5="";"";C5))
For a = LBound(dz) To UBound(dz)
yazkont = False
For b = LBound(dz, 2) To UBound(dz, 2)
siz zaten büyük kısmı çözdünüz. küçük kısmı da ben çözmüş oldum. iyi çalışmalar.Ben de günler sonra aşağıdaki şekilde bir çözüm önerisi sunabilirim sanıyorum.
Kırmızı kısmı kodunuza ilave ederseniz satırlar arası bir aktarım olmasını engelleyebilirsiniz. Dilerseniz tek değer içeren satırlarda işlem yapılmaması için de ayrı bir kontrol döngüsü eklenebilir.
Rich (BB code):For a = LBound(dz) To UBound(dz) yazkont = False For b = LBound(dz, 2) To UBound(dz, 2)
şöyle bir şey olabilir mi peki. tek hücrede değer varsa, yani herhangi bir aralık olmuyorsa; sadece tek hücrenin değerini ilgili hücreye yazdırabilir miyiz? boş kalmasınBen de günler sonra aşağıdaki şekilde bir çözüm önerisi sunabilirim sanıyorum.
Kırmızı kısmı kodunuza ilave ederseniz satırlar arası bir aktarım olmasını engelleyebilirsiniz. Dilerseniz tek değer içeren satırlarda işlem yapılmaması için de ayrı bir kontrol döngüsü eklenebilir.
Rich (BB code):For a = LBound(dz) To UBound(dz) yazkont = False For b = LBound(dz, 2) To UBound(dz, 2)
For a = LBound(dz) To UBound(dz)
say = 0
For b = LBound(dz, 2) To UBound(dz, 2)
If dz(a, b) <> "" Then
say = say + 1
If say = 2 Then GoTo 1 'Satırda 2 dolu değer varsa sonraki döngüye git
End If
Next
GoTo 2 'Satırda 2 dolu değer olmadığı durumda bu satırı pas geç, yani değişiklik yapma
1
For b = LBound(dz, 2) To UBound(dz, 2)
If dz(a, b) <> "" Then
yazkont = Not yazkont
yaz = dz(a, b)
If yazkont = False Then Exit For 'Dosyanızdaki tek bir satıra birden fazla aralık girilecekse ise bu kodu siliniz.
End If
If yazkont = True Then dz(a, b) = yaz
Next
2
Next