Çalışma Sayfası Eklemek İçin Makro - Excel İpuçları

İçindekiler

NJ'de sıkışmış bu haftanın sorusunu sordu:

Satış rakamlarının grafiklerini içeren bir Excel çalışma kitabı oluşturuyorum. İlk Excel çalışma sayfası, şirketteki ilk satış bölgesine karşılık gelir (örn. FL01.) Çalışma sayfasının sekme adı (A1 hücresinin yanı sıra) FL01 satış bölge numarasıdır. Grafikleri yönlendiren veriler sağdadır (belirlediğim yazdırılabilir aralığın dışında) ve arama anahtarı olarak A1 hücresindeki FL01 satış bölge numarasıyla VLOOKUP kullanılarak başka bir excel çalışma kitabından doldurulur. Çalışma kitabına 76 özdeş çalışma sayfasını (her satış bölgesi için bir tane) eklemem gerekiyor, öyle ki her sayfanın sekme adı ve A1 hücresi birbirini izleyen satış bölge numaralarına eşit olacak (ör. FL01, FL02, LK01, LK02.) Bunu bir otomatik yol?

Bu, bir VBA makrosu ile kolayca başarılabilir, ancak bunu elle yapmak için ipucunu kapatmama izin verin. Biçimlendirme ve yazdırma aralıkları olan bir sayfaya sahip olduğunuzda, o sayfanın sekmesine sağ tıklayarak sayfayı kolayca çoğaltabilirsiniz. Açılan menüden Taşı veya Kopyala'yı seçin. Taşı veya Kopyala iletişim kutusundan, "(sona taşı)" öğesini seçin ve "Kopya Oluştur" kutusunu işaretleyin, ardından Tamam'ı tıklayın. Biçimlendirmeli sayfanızın bir kopyası çalışma kitabınıza yeni bir çalışma sayfası olarak eklenecektir. (Bu işlemi hızlandırmak için çalışma sayfası sekmesini sağa sürüklerken Ctrl tuşunu basılı tutun.) Genellikle sayfayı yeniden adlandırmak isteyeceksiniz. Yeni sekmeyi sağ tıklayın, yeniden adlandır'ı seçin ve anlamlı bir ad yazın.

Excel makrosunun çalışması için bir bölge listesine ihtiyacı vardır. Makroyu yazmadan önce, bu kitaba Veri adlı yeni bir sayfa ekleyin. A1 Hücresine, 2. satış bölgesini girin (örneğinizde FL02). Tüm satış bölgelerini aşağı doğru A sütununa girmeye devam edin. Boş satır bırakmayın.

Yeni bir makro ekleyin ve bu kodu kopyalayın:

Public Sub CopyIt() Sheets("Data").Select ' Determine how many territories are on Data sheet FinalRow = Range("A65000").End(xlUp).Row ' Loop through each territory on the data sheet For x = 1 To FinalRow LastSheet = Sheets.Count Sheets("Data").Select ThisTerr = Range("A" & x).Value ' Make a copy of Fl01 and move to end Sheets("FL01").Copy After:=Sheets(LastSheet) ' rename the sheet and set A1 = to the territory name Sheets(LastSheet + 1).Name = ThisTerr Sheets(ThisTerr).Select Range("A1").Value = ThisTerr Next x End Sub

Makro, El ile Taşı veya Kopyala'yı tıklatmakla aynı işlevi gören Sayfalar (). Her kopyayı yapmadan önce Sheets.Count özelliğini kullanarak sayfa sayısını buluyorum. 56 sayfa olup olmadığını biliyorum ve yeni bir sayfa eklersem, buna E-Tablolar (57) olarak atıfta bulunulacaktır. Excel'in yeni sayfayı nasıl adlandıracağını tahmin etmeyi biraz tahmin edilemez buluyorum, bu yüzden sayfayı tanımlamak için sayısal dizin numaraları kullanıyorum. Yeni sayfayı "Sheets (LastSheet + 1) .Name = ThisTerr" ile yeniden adlandırdıktan sonra, sayfanın adını kullanarak tercih ettiğim sayfaya başvurma yöntemime geri dönebilirim.

Bölgeler listesinin listede FL01 içermemesi gerektiğini unutmayın. Aynı ada sahip bir FL01 kopyasını yeniden adlandırmaya çalışmak makroda hataya neden olur.

Ilginç makaleler...