• DİKKAT

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

Hücre içindeki sayıları bulup, tekrarsız ve sıralı şekilde yazmak

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,

Örnek dosyam ektedir.

A sütunundaki hücrelerin içinde "-" ile ayrılmış sayıları tekrarsız ve sıralı şekilde B sütunundaki satıra yazmak istiyorum. Nasıl yapabiliriz?
(A sütunundaki birden fazla veri vardır)
Mesela A1 hücresinde
100-10-100-1-50-80-45-25-80-1-50-30-45-10
var ise
B1 hücresinde
1-10-25-30-45-50-80-100
olacak.

Yardımcı olabilirseniz sevinirim.

İyi çalışmalar.
 
Son düzenleme:
C sutünu yardımcı olarak kullanılmıştır
aşağıdaki kodu denermisiniz.

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Worksheets("Sayfa1").Columns("B:C").ClearContents
For i = 1 To Worksheets("Sayfa1").Cells(Rows.Count, "A").End(3).Row
n = 0
sat1 = 0
sat4 = 0
sat2 = 0
sat3 = Len(Worksheets("Sayfa1").Cells(i, 1).Value)
For j = 1 To Len(Worksheets("Sayfa1").Cells(i, 1).Value)
If Mid(Worksheets("Sayfa1").Cells(i, 1).Value, j, 1) = "-" Then
sat2 = 1
sat1 = sat1 + 1
Worksheets("Sayfa1").Cells(sat1, "C").Value = Mid(Worksheets("Sayfa1").Cells(i, 1).Value, n + 1, j - 1 - n)
n = j
End If
If sat4 = 0 Then
If Val(sat3) <> j Then
If Mid(Worksheets("Sayfa1").Cells(i, 1).Value, Val(sat3) - j, 1) = "-" Then
sat1 = sat1 + 1
Worksheets("Sayfa1").Cells(sat1, "C").Value = Mid(Worksheets("Sayfa1").Cells(i, 1).Value, Val(sat3) - j + 1, sat3)
sat4 = 1
End If
End If
End If
Next
If sat2 = 0 Then
sat1 = sat1 + 1
Worksheets("Sayfa1").Cells(sat1, "C").Value = Worksheets("Sayfa1").Cells(i, 1).Value
End If
Worksheets("Sayfa1").Columns("C:C").Sort Key1:=Worksheets("Sayfa1").Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
deg1 = ""
For r = 1 To Worksheets("Sayfa1").Cells(Rows.Count, "C").End(3).Row
aranan1 = Worksheets("Sayfa1").Cells(r, "C").Value
If WorksheetFunction.CountIf(Worksheets("Sayfa1").Range("C1:C" & r), aranan1) = 1 Then
If deg1 = "" Then
deg1 = Worksheets("Sayfa1").Cells(r, "C").Value
Else
deg1 = deg1 & "-" & Worksheets("Sayfa1").Cells(r, "C").Value
End If
End If
Next
Worksheets("Sayfa1").Cells(i, "b").Value = deg1
Worksheets("Sayfa1").Columns("C:C").ClearContents
Next
Application.ScreenUpdating = True
MsgBox "işlem tamam"
End Sub
 
C sutünu yardımcı olarak kullanılmıştır
aşağıdaki kodu denermisiniz.

Selam,
Çok teşekkür ederim. epey emek vermişsiniz. Ancak bir sorun var. Hücre içindeki en son sayıyı dikkate almıyor.
mesela hücrede

99-98-97 var ise

98-99 yazıyor.

Şimdiden çok teşekkür ederim.
 
Selam,
Çok teşekkür ederim. epey emek vermişsiniz. Ancak bir sorun var. Hücre içindeki en son sayıyı dikkate almıyor.
mesela hücrede

99-98-97 var ise

98-99 yazıyor.

Şimdiden çok teşekkür ederim.

Yukarıdaki mesajdaki kodu güncelledim.
 
Yukarıdaki mesajdaki kodu güncelledim.

Sayın hocam çok süper olmuş ellerinize sağlık. Ancak,
hücrede 1 tane sayı olursa mesela 25
aşağıdaki satırda hata veriyor.

Kod:
If Mid(Worksheets("Sayfa1").Cells(i, 1).Value, Val(sat2) - j, 1) = "-" Then

İyi çalışmalar.
 
Sayın hocam çok süper olmuş ellerinize sağlık. Ancak,
hücrede 1 tane sayı olursa mesela 25
aşağıdaki satırda hata veriyor.

Kod:
If Mid(Worksheets("Sayfa1").Cells(i, 1).Value, Val(sat2) - j, 1) = "-" Then

İyi çalışmalar.

4 nolu mesajdaki kodu düzelttim.
 
Sizden ricam bana acil olarak
şımdı masraf avans tablom war

isim bakiyesi
ayşe 50,00
ayşe 20,00

bu şekılde yüzlerce isim ve bakiye var
ay sonunda maaşlardan kesinti yapılacak

1) isim sütunundaki tekrarlanan isimleri bul tek satırda yaz
2) karşınadaki bakiye sütunundaki bakiyelerini de al tek satırda topla

yani ; ayşe=100tl
ali=50tl şeklınde alt alta sıralasın
yani kaç tane farklı isim varsa 1 kere göstersin
demek istiyorum nasıl yapabilirim saygılar..
 
Sizden ricam bana acil olarak
şımdı masraf avans tablom war

isim bakiyesi
ayşe 50,00
ayşe 20,00

bu şekılde yüzlerce isim ve bakiye var
ay sonunda maaşlardan kesinti yapılacak

1) isim sütunundaki tekrarlanan isimleri bul tek satırda yaz
2) karşınadaki bakiye sütunundaki bakiyelerini de al tek satırda topla

yani ; ayşe=100tl
ali=50tl şeklınde alt alta sıralasın
yani kaç tane farklı isim varsa 1 kere göstersin
demek istiyorum nasıl yapabilirim saygılar..

Sorunuzu yeni bir konu açarak örnek dosya ekliyerek sorunuz.
 
Bir soruda ben sarayım bu veriler nereden alıyorsunuz veya nereden geliyor
Selam,
aslında bu soruyu Sayın Recep İpek'in Access Soruları altında sorduğu sorudan esinlendim. Çalışma yaptığım birkaç tür dosyama uyarlamayı düşünüyorum. Sorumu genel mantığını anlayabilmek için sordum. Sayenizde de çok şeyler öğreniyorum.
Mesela ilk kullanacağım alan şu olacak;

Bir üretimde yapılıyor. Kullanılan bir makinenin birbirinin aynısı 45 kısmı var. Üretim esnasında bu kısımda "Slide sıkışması" diye adlandırılan ve olağan görülebilen arıza oluyor.
bazı üretimlerde hiç arıza olmadığı gibi, bazı üretimlerde ise 1'den fazla, hatta aynı kısım 1'den fazla arıza görebiliyor.Bunlar, Üretim formuna arıza oluş sırasına göre yazılıyor. Bunlar Excel'e veri kayıt yapılırken formdaki yazılış sırasına göre kayıt yapılıyor.
Mesela;
5-2-34-22-66-3-5 gibi tek hücre içine yazılıyor.
her bir no. kısım anlamına geliyor. Bu veri kayıtları yapıldıktan sonra başka yerlerde kullanırken şuna ihtiyaç duyuluyor;
Arıza gören kısımların tekrarsız bir şekilde küçükten büyüğe sıralanması
3-5-22-34-66 gibi.
İşte sizin kodlar bu işe yarıyor. Hatta yazdığınız kodlar sayesinde metinleri de aynı şekilde sıralayabiliyorum. Bu da çok işime yarayacaktır. Geçekten size çok teşekkür ederim.

Bu tip çalışmalar çok çeşitli alanlarda kolaylık sağladığı gibi, excel ufkumuzu açıyor ve aynı zamanda büyük bir zevk, haz, heyecan veriyor.
şimdi sizin kodlar üzerinde biraz çalışmalar yapacağım. şöyleki;
1-) C sütunu yerine dizi oluşturup dizi üzerinden sıralama yapmak.
2-) tekrarlı bir şekilde sıralama yapmak
3-) büyükten küçüğe tekrarlı ve tekrarsız sıralama yapmak.

İyi çalışmalar.
 
Geri
Üst