• DİKKAT

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

tamsayıları ayıklama

Katılım
21 Şubat 2011
Mesajlar
24
Excel Vers. ve Dili
excell 2007, türkçe
merhaba, ben bir sütunda tek sayıda tamsayı olduğunu biliyorum, ama sütundaki bütün değerler tamsayı değil, diyelim ki 15 tane tamsayı var ben bunları bir sonraki sütunda şu şekilde sıralamak istiyorum. ilk hücreye 1-14-15 (bunlar tamsayıların sıraları) altındaki hücreye 2-13-15, altındaki hücreye 3-12-15, altındakine 4-11-15.... ve formül 7-8-15 te bitmeli. Yani 8. hücrede 8-7-15 olmayacak...
 
merhaba, ben bir sütunda tek sayıda tamsayı olduğunu biliyorum, ama sütundaki bütün değerler tamsayı değil, diyelim ki 15 tane tamsayı var ben bunları bir sonraki sütunda şu şekilde sıralamak istiyorum. ilk hücreye 1-14-15 (bunlar tamsayıların sıraları) altındaki hücreye 2-13-15, altındaki hücreye 3-12-15, altındakine 4-11-15.... ve formül 7-8-15 te bitmeli. Yani 8. hücrede 8-7-15 olmayacak...

Merhaba
A1:A15 arasında sayılarınız var
C1 başlangıç hücresi=1
D1: bitiş hücresi=15
B1'e aşağıdaki formülü yazarak deneyiniz.
Kod:
+DOLAYLI("a"&$C$1*SATIR(A1))+DOLAYLI("a"&+$D$1-SATIR(A1))+$A$15
 
tam anlatamadım sanırım, benim c stünumda 100 tane sayı var bunların 15 tanesi tamsayı. ben bunları d stünuna öyle sıralamak istiyorum ki d1e şu yazsın 1.tamsayı-14.tamsayı-15.tamsayı d2 ise 2.tamsayı-13.tamsayı-15.tamsayı..... ta ki d7e kadar o da 7.tamsayı-8.tamsayı-15.tamsayı, formülün burda bitmesi gerekiyo, 15 tane tamsayı varsa d7 de 21 tane tamsayı varsa d10 da yani 1 eksiğinin yarısında durmalı...
 
bugün bunu halletmem gerekiyor, yok mu yardımcı olacak bir arkadaş?
 
Son düzenleme:
Merhaba,

Sorunuzu küçük bir örnek dosya ekleyerek dosya içersinde gösterek detaylı açıklarmısınız.
 
ömer bey merhaba,
dosyada bir sütunda belli bir kurala bağlı olmaksızın artarak giden sayılar var, bunlardan bazıları tamsayı bazıları değil. ben tamsayıları yanındaki sütuna ayıklamak istiyorum, örnekteki tamsayılar 3 5 9 12 15 17 19 27 30 35 37 40 41 45 55, bu tamsayılar hakkında bildiğim tek şey tek sayıda oldukları mesela eklediğim örnekte 15 tane var. ben bunları d sütununa şöyle taşımak istiyorum d1 de 3-45-55 yazsın d2 de 5-41-55 d3 te 9-40-55 d4te 12-37-55... yalnız formül tamsayı sayısının 1 eksiğinin yarısında bitsin istiyorum mesela burda 15 tamsayı varsa formül d7 de bitsin, o halde d7 de 19-27-55 olacaktır, kolay gelsin tşkler

dipnot: formül excel 2007 formatına göre olsun lütfen.

Ekli dosyayı görüntüle örnek.xls
 
Aktarım mantığı nedir? Konuyla ilgili çok az bilgi veriyorsunuz. Ayrıca dosya ekleyip açıklamanızı rica etmiştim. Mümkünse dosya ekleyerek açıklarmısınız.
 
dosya ekledim sizde görünmüyor mu? aktarım mantığını biraz açıklayayım mesela 3 tane tamsayı varsa bunlar d1e 1-2-3 diye sıralanacak eğer 5 tamsayı varsa d1e 1-4-5 d2 ye 2-3-5 şeklinde sıralanacak, eğer 7 tamsayı varsa d1e 1-6-7 d2ye 2-5-7 d3e 3-4-7 şeklinde sıralanacak (burdaki sayılar tamsayıların sırası) kısaca en büyük tamsayıyı çıkarırsak geri kalanları bir önden bir arkadan seçiyoruz büyük sayıyı da hepsinin yanına ekliyoruz, umarım anlatabilmişimdir??
 
dosya ekledim sizde görünmüyor mu? aktarım mantığını biraz açıklayayım mesela 3 tane tamsayı varsa bunlar d1e 1-2-3 diye sıralanacak eğer 5 tamsayı varsa d1e 1-4-5 d2 ye 2-3-5 şeklinde sıralanacak, eğer 7 tamsayı varsa d1e 1-6-7 d2ye 2-5-7 d3e 3-4-7 şeklinde sıralanacak (burdaki sayılar tamsayıların sırası) kısaca en büyük tamsayıyı çıkarırsak geri kalanları bir önden bir arkadan seçiyoruz büyük sayıyı da hepsinin yanına ekliyoruz, umarım anlatabilmişimdir??

Module kopyalayıp çalıştırın.

Kod:
Sub Tamsayı()
 
    Dim i As Long, Dizi() As Long, Say As Long, Say_1 As Long
 
    Range("D:D").ClearContents
    For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
        If Cells(i, "C") <> "" And Cells(i, "C") = CLng(Cells(i, "C")) Then
            Say = Say + 1
            ReDim Preserve Dizi(1 To Say)
            Dizi(Say) = Cells(i, "C")
        End If
    Next i
    Say_1 = Say - 1
 
    For i = 1 To CLng(Say / 2)
        Cells(i, "D") = Dizi(i) & "-" & Dizi(Say_1) & "-" & Dizi(Say)
        Say_1 = Say_1 - 1
    Next i
 
End Sub

.
 
merhaba,
yazdığınız formülü d1 hücresine yapıştırıyorum, olduğu gibi kalıyor, bi sorun var sanki.
 

Ekli dosyalar

tekrar merhaba

Ömer bey elinize sağlık, gruplama işini çok iyi anlamışsınız, verdiğiniz ekte küçük denemeler yaptım 2 küçük sorun var, birincisi 1 satır fazla grupluyor, 15 tamsayıda 7 yerine 8 tane grupluyor (tamsayı sayısının 1 eksiğinin yarısı kadar olması lazımdı) , ikincisi bazen mesela 1-2-3 yazıyorum butona tıkladığımda 02.01.2003 olarak görünüyor tarih gibi, bunları da düzeltebilir misiniz acaba? teşekkürler.
 
biraz daha deneme yaptım da fazla satırı bazen grupluyor bazen değil.
 
biraz daha deneme yaptım da fazla satırı bazen grupluyor bazen değil.

Kodları aşağıdaki gibi değiştirip deneyin.

Kod:
Sub Tamsayı()
 
    Dim i As Long, Dizi() As Long, Say As Long, Say_1 As Long
 
    Range("D:D").ClearContents
    Columns("D:D").NumberFormat = "@"
    
    For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
        If Cells(i, "C") <> "" And Cells(i, "C") = CLng(Cells(i, "C")) Then
            Say = Say + 1
            ReDim Preserve Dizi(1 To Say)
            Dizi(Say) = Cells(i, "C")
        End If
    Next i
    Say_1 = Say - 1
 
    For i = 1 To CLng((Say - 1) / 2)
        Cells(i, "D") = Dizi(i) & "-" & Dizi(Say_1) & "-" & Dizi(Say)
        Say_1 = Say_1 - 1
    Next i
 
End Sub

.
 
ömer bey merhaba tekrar,
sanırım söylemeyi unuttuğum bişey var, c sütununda b sütununa bağımlı sayılar var, yani c hücresinde bir formül var, son düzenlemeniz doğru çalışıyor herşey istediğim gibi ama c de şöyle bir formül var ve onu yazdığımda buton hata vermeye başlıyor.

=EĞER(B1="";"";KAREKÖK(B1))

bu hatayı düzeltmek mümkün mü acaba?
 
Kodları aşağıdakilerle değiştirip deneyin.

Kod:
Sub Tamsayı()
 
    Dim i As Long, Dizi() As Long, Say As Long, Say_1 As Long
 
    Range("D:D").ClearContents
    Columns("D:D").NumberFormat = "@"
    
    For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
        If IsNumeric(Cells(i, "C")) = True Then
            If Cells(i, "C") = CLng(Cells(i, "C")) Then
                Say = Say + 1
                ReDim Preserve Dizi(1 To Say)
                Dizi(Say) = Cells(i, "C")
            End If
        End If
    Next i
    Say_1 = Say - 1
 
    For i = 1 To CLng((Say - 1) / 2)
        Cells(i, "D") = Dizi(i) & "-" & Dizi(Say_1) & "-" & Dizi(Say)
        Say_1 = Say_1 - 1
    Next i
 
End Sub

.
 
Geri
Üst