DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Merhabalar
Verileri sıralama ile ilgili makro oluşturmak istedim
lakin başarılı olamadım. Yardımcı olabilirseniz sevinirim.
Teşekkür ederim.
Sub Duzenle()
Dim i As Long, _
j As Integer, _
MaxX As Integer, _
MaxA As Integer, _
MinA As Integer, _
Sat As Long, _
Kol As Integer
Application.ScreenUpdating = False
Sat = 2 + Range("D3").CurrentRegion.Rows.Count
Kol = 3 + Range("D3").CurrentRegion.Columns.Count
For i = 3 To Sat
MaxX = 3
MaxA = 3
MinA = Kol + 1
j = 4
Do
If Cells(i, j) = "x" Or Cells(i, j) = "X" Then
If j > MaxX Then MaxX = j
End If
If Not Cells(i, j) = "x" And Not Cells(i, j) = "X" Then
If j > MaxA Then MaxA = j
If j < MinA Then MinA = j
End If
j = j + 1
Loop While j <= Kol
Range(Cells(i, MinA), Cells(i, MaxA)).Cut
Range(Cells(i, MinA + (Kol - MaxA)), Cells(i, MaxA + (Kol - MaxA))).Select
ActiveSheet.Paste
Range(Cells(i, 4), Cells(i, Kol)).Replace What:="x", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
Application.ScreenUpdating = True
End Sub
Dosyadaki açıklamada: "x" ler hayalidir x olan hücreleri silip diğerlerini sağa yanaştırıp blok yapacağız. şeklinde belirtilmesi işi anlamsızlaştırıp güçleştiriyor... :dusun:
Sub Duzenle()
Dim i As Long, _
j As Integer, _
MaxA As Integer, _
MinA As Integer, _
Sat As Long, _
Kol As Integer
Application.ScreenUpdating = False
Sat = 6
Kol = 10
For i = 3 To Sat
MaxA = 3
MinA = Kol + 1
j = Kol
Do
If Not Cells(i, j) = "" Then
If j > MaxA Then MaxA = j
If j < MinA Then MinA = j
End If
j = j - 1
Loop Until j < 4
Range(Cells(i, MinA), Cells(i, MaxA)).Cut
Range(Cells(i, MinA + (Kol - MaxA)), Cells(i, MaxA + (Kol - MaxA))).Select
ActiveSheet.Paste
Next i
Application.ScreenUpdating = True
End Sub
Sub Sütun_Ekle()
Dim i As Integer, a As Integer, say As Integer
On Error Resume Next
For i = 6 To 3 Step -1
For a = 10 To 4 Step -1
If Cells(i, "J") = "" And Cells(i, a) = "" Then
say = say + 1
Cells(i, 5 - say).Insert Shift:=xlToRight
End If
Next a
say = Empty
Next i
i = Empty: a = Empty: say = Empty
End Sub
Merhabalar değerli hocam.
Emeğiniz için çok çok teşekkür ederim. Satır ve sütun bitişleri sabit olduğu
zaman makrodan tam manası ile verim alamayız hocam.
Örnek dosyada da belirttiğim gibi tanımlı bir alanda (A1:AA111 gibi) son dolu hücrenin
sütununu kılavuz olarak kullanarak kodu kurgular isek kod çok daha işlevsel olur.
Bu imkanımız var ise tabii. Saygılar hocam.
Sub Duzenle()
Dim BasRow As Long, _
SonRow As Long, _
BasCol As Integer, _
SonCol As Integer, _
i As Long, _
j As Integer, _
k As Integer
If Selection.Count = 1 Then Exit Sub
BasRow = Selection.Row
BasCol = Selection.Column
SonRow = Selection.Rows.Count + BasRow - 1
SonCol = Selection.Columns.Count + BasCol - 1
Application.ScreenUpdating = False
For i = BasRow To SonRow
j = Cells(i, SonCol + 1).End(1).Column
If j > 1 Then
k = BasCol + (SonCol - j)
Range(Cells(i, BasCol), Cells(i, j)).Cut Range(Cells(i, k), Cells(i, k))
End If
Next i
Application.ScreenUpdating = True
MsgBox "İşlem Tamamlanmıştır....", vbInformation, "Necdet YEŞERTENER, 4 Aralık 2013 Ankara - excel.web.tr"
End Sub
Merhaba;
Eki deneyin.
İyi çalışmalar.
Sayın Necdet hocam. Çok çok teşekkür ederim.
Kodumuz bu hali ile vazifesini yapıyor. Ellerinize sağlık.
C2:O15 aralığında ki son dolu hücreyi tesbit edip; Başlangıç hücresi (C2:son dolu)
seçecek başka bir kod yazılır ise mevcut makro ile sıralı şekilde kullanılabilir.
Eğer mümkünatı var ise daha şık olur. Tekrardan teşekkür eder saygılar sunarım.