yasin85
Altın Üye
- Katılım
- 29 Haziran 2011
- Mesajlar
- 264
- Excel Vers. ve Dili
- 2019, Türkçe
- Altın Üyelik Bitiş Tarihi
- 25-08-2026
Ekli dosyalar
-
235.4 KB Görüntüleme: 17
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sn. @Orion1 ,Benzersiz aşağıdaki gibi oldu.
Dosya ektedir.
Kod:Private Sub UserForm_Activate() Dim f As Long, prgrsbaruzunluk As Double, deg3 As Long Dim labeluzunluk As Double, oran As Double Dim sh As Worksheet, i As Long, x As Integer, sonsat As Long Dim sat As Long, j As Byte, kod As String, ayirac As String Dim deg As Integer, sonuc As String, myarr(), liste() Dim z As Object, n As Long, refno As String Sheets("Sayfa2").Select Set sh = Sheets("Sayfa1") Range("A2:C" & Rows.Count).Clear Range("B2:B" & Rows.Count).NumberFormat = "@" Range("C2:C" & Rows.Count).NumberFormat = "#,##0" Application.ScreenUpdating = False sonsat = sh.Cells(Rows.Count, "A").End(xlUp).Row Set z = CreateObject("scripting.dictionary") sat = 2 Application.ScreenUpdating = False prgrsbaruzunluk = 16381 * 2 * (sonsat - 1) labeluzunluk = Label2.Width Label2.Width = 1 deg3 = 1 liste = sh.Range("A2:XFC" & sonsat).Value ReDim myarr(1 To 16383 * 2, 3) For i = 1 To UBound(liste) kod = liste(i, 1) ayirac = liste(i, 2) deg = 0 For j = 1 To 2 For x = 16383 To 3 Step -1 If liste(i, x) <> "" Then sonuc = Format(Split(liste(i, x), ayirac)(deg), "00") refno = kod & sonuc If Not z.exists(refno) Then n = n + 1 z.Add refno, n myarr(n, 1) = kod myarr(n, 2) = sonuc End If myarr(z.Item(refno), 3) = myarr(z.Item(refno), 3) + 1 End If oran = (deg3 / prgrsbaruzunluk) DoEvents Label2.Width = Int(oran * labeluzunluk) Label1.Caption = "% " & Int((deg3 / prgrsbaruzunluk) * 100) deg3 = deg3 + 1 Next x deg = 1 Next j Next Erase liste() Set z = Nothing Range("A2").Resize(n, 3) = myarr Erase myarr() Application.Wait Now + TimeValue("00:00:01") Unload Me Application.ScreenUpdating = True MsgBox "İşlem tamamlandı." End Sub
Sn. @ÖmerBey ,Sn. @ÖmerBey ,
İlk yaptığınız işlem benzersiz çalışıyor fakat oda çok uzun sürüyor..
ikinci kodunuz hızlı çalışıyor fakat tekrarlananlar geliyor bilginize..
Rica ederim,Sn. @ÖmerBey ,
İlk yaptığınızı dikkate alıyorum daha işlem için uğraşmayın bekleme işide bunun tuzu olsun ellerinize sağlık bilgilerinize sağlık çok teşekkürler..
16830 küsur veriyi her satırda 2 kere dönüyor.Sn. @Orion1 ,
Dosya çalışıyor ellerinize sağlık tek sorun yavaş olması başka problem yok C hücresinden SO hücresi arasında ve satır olarak da 1000 satırlık işlemi oldukça uzun sürede yapıyor onada katlanacağız çok güzel bir çalışma oldu ellerinize sağlık..
Hocam teşekkür ederim. Ama excel dosyası hariç bir şey indiremedim.Merhabalar,
C hücresinden XFC hücresine kadar uzunlukta olan alanda yan yana olan verileri alt alta gelmesinin işlemi yapmak istiyorum fakat B hücresinde yazılmış olan koşulu dikkate alarak hücre içerisinde ayraç niteliğinde bir alt satıra yazmasını sağlaya bilir miyiz?
Alt alta halini ekte bulunan exceldeki sayfa 2 düzeni gibi olması konusunda yardımcı ola bilir misiniz.
http://s2.dosya.tc/server8/dnjcjw/_VERILERI_KOSULLARA_GORE_ALT_ALTA_GETIRME.rar.html
Koşullar= (","),(" "),("/"),("*"),("-"),("alt+enter") .. vb
teşekkür ederim hocamAlternatif,
Sonuç mükerrer olarak.
Kod:Sub test() Set s1 = Sheets("Sayfa1") a = s1.Range("A2").CurrentRegion Set d = CreateObject("scripting.dictionary") art = (UBound(a, 2) - 2) * 2 ReDim b(1 To UBound(a) * art, 1 To 2) For i = 2 To UBound(a) For j = 3 To UBound(a, 2) deg = Split(a(i, j), a(i, 2)) For x = 0 To UBound(deg) krt = deg(x) If Not d.exists(krt) Then d(krt) = d.Count + 1 say = d.Count b(say, 1) = a(i, 1) b(say, 2) = deg(x) End If Next x Next j Next i Set s2 = Sheets("Sayfa2") s2.Range("A2:B" & Rows.Count) = Empty If say > 0 Then: s2.[A2].Resize(say, 2) = b MsgBox "İşlem bitti.", vbInformation End Sub