• DİKKAT

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

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
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?
 
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))
 
teşekkürler
:) mazur görün. kestirmeden son sayıyı bilmiyorum demekti...
: \ / ? * [ ] karakterleri yerine - koyması için eklenecek kod nasıl olmalı peki.
 
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.
 
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
 
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.
 
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)
 
Geri
Üst