Soru her döngünün başına sıralama için sayı ekleme

Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
Kod:
Filename = Dir(Path & "*.xlsx")
  Do While Filename <> ""
  Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
     For Each Sheet In ActiveWorkbook.Sheets
     ActiveSheet.Name = Left(ActiveSheet.Range("v3"), 31)
Sheet.Copy After:=w1.Sheets(1)
  Next Sheet
     Workbooks(Filename).Close
     Filename = Dir()
  Loop
ActiveSheet.Name = Left(ActiveSheet.Range("v3"), 31)

bu kısıma her döngüde başına 01 -02 ..... sonsuz, şeklinde sıralama için kod ekleyebilir miyiz?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,986
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Sonsuz ibaresi biraz sorunlu ama neyse artık; aşağıdaki gibi bir ilaveyle istediğinizin olması lazım.

Ancak; sayı verme işlemi baştan sona kadar aynı şekilde mi devam edecek yoksa üzerinde işlem yapılacak her yeni
Çalışma Kitabıyla birlikte 1'den mi başlayacak o belli değil.
Şayet; kod tarafından her yeni Çalışma Kitabının açılmasıyla sayı tekrar 1'den başlayacaksa;
Workbooks(Filename).Close satırından sonra say = 0 şeklinde bir kod satırı daha ilave edin.

say = say +1
ActiveSheet.Name = say & " " Left(ActiveSheet.Range("v3"), 30 - Len(say))
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
teşekkürler
:) mazur görün. kestirmeden son sayıyı bilmiyorum demekti...
: \ / ? * [ ] karakterleri yerine - koyması için eklenecek kod nasıl olmalı peki.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,986
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Onun farkındayım ama Ms.Excel versiyonuna göre farklı olmak üzere sayfa sayısı sınırı var diye biliyorum.
İstediğiniz işlemin kısa yolu olabilir ama aklıma gelen ilk yol, içiçe Replace kodu kullanmak oldu.
Replace(Replace(Replace(metin,"]","");":",""),"\","").... gibi düşünebilirsiniz.

Not : Önceki cevabımda kullandığınız 31 yerine 30 yazmamın sebebi, başa eklenen sayıdan sonra 1 BOŞLUK önermiş olmam.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
ActiveSheet.Name = Replace(Replace(Replace(Replace(Replace(Left(ActiveSheet.Range("w2"), 31), ":", "-"), "/", "-"), "(", ""), ")", ""), "*", "-")
bu şekilde halletim. 30 u farkettim. anlamıştım onu. bir şeyleri yaptıkça başka sorunlar çıkıyor. numarayı verdim vermesine ama sayfaları birleştirdikten sonra sıralamayı 1 - 10 - 100 - 101 -102 -103 - ...... - 11 - 12 -13 -.... şeklinde yapıyor. bu istediğim bir durum değil.
sıralama için ise kullandığım kodu yazarsam belki bir fikriniz olur.

Kod:
Sub srl()
Application.ScreenUpdating = False
Dim ShCount As Integer, i As Integer, j As Integer
ShCount = Sheets.Count
For i = 1 To ShCount - 1
For j = i + 1 To ShCount
If Sheets(j).Name < Sheets(i).Name Then
Sheets(j).Move Before:=Sheets(i)
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,986
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Ben olsam If Sheets(j).Name < Sheets(i).Name Then satırında;
-- ya BOŞLUK KARAKTERİnin konumunu tespit edip, sayfa isimlerinin soldan buraya kadarki RAKAM kısımlarını SAYI olarak karşılaştırmayı,
-- ya da 999 üst sınır varsayıp, isimlendirme sırasında 1 yerine 001, 15 yerine 015 gibi isim verilmesini sağlayıp, sayfa isimlerinin soldan 3 karakterlerini METİN olarak karşılaştırmayı,
düşünürdüm.
 
Katılım
25 Ocak 2006
Mesajlar
763
Excel Vers. ve Dili
2019 tr
Altın Üyelik Bitiş Tarihi
04-01-2024
fikirlerinizden yola çıkarak kod içinde değil ama hücre içinde hallettim. teşekkürler
=SOLDAN(BİRLEŞTİR(METNEÇEVİR(KAÇINCI(V3;'HÜCRE GİRİŞ'!Q1:Q114;0);"000");" ";V3);30)
 
Üst