Microsoft Excel'de VBA kullanarak bir Çalışma Sayfasına Hafta içi Pzt - Cuma girin

Anonim

Bu yazımızda iki tarih arasındaki hafta içi günleri çıkarmak için bir makro oluşturacağız.

Bu örnekte makroyu çalıştırmadan önce başlangıç ​​ve bitiş tarihini belirtmemiz gerekiyor. Makro, J8 hücresinden başlangıç ​​tarihi değerini ve J9 hücresinden bitiş tarihi değerini seçer. Başlangıç ​​ve bitiş tarihi belirlendikten sonra “Gönder” butonuna basılarak veya Alt + F8 kısayol tuşlarına basılarak makro çalıştırılabilir.

Makro çalıştırıldığında, yeni bir sayfada iki tarih arasındaki hafta içi günleri döndürür. Yeni eklenen çalışma sayfası, A sütununda hafta içi günleri ve ardından B sütununda ilgili tarihi içerir. B sütunundaki çıktı tarihi gg.aa.yy biçiminde olacaktır.

Her Hafta, birbirini izleyen iki hafta arasında ayrım yapmak için boş bir satır izleyecektir.

Mantıksal açıklama

Makroda, hafta içi ve hafta sonlarını ayırt etmek için Hafta içi işlevini kullandık. Biçim işlevi, tarihi istenen biçimde görüntülemek için kullanılır.

hafta içi işlevi

Hafta içi işlevi, haftanın gününü temsil eden bir tamsayı değeri döndürür.

Sözdizimi

Hafta içi( Date_Value, [First_Day_Of_Week] )

Tarih_Değeri haftanın gününü bulmak istediğiniz tarih değerini belirtir.

Haftanın ilk günü haftanın hangi gününün haftanın ilk günü olarak kabul edileceğini belirtir. Girdi olarak bir tamsayı değeri veya FirstDayOfWeek numaralandırmasından seçilen değeri alır. Herhangi bir değer belirtilmezse, varsayılan değer olarak FirstDayOfWeek.Sunday kullanılır.

numaralandırma değeri

Tamsayı değeri

Uyarılar

Haftanın İlk Günü.Sistem

0

Sistem ayarlarında belirtilen haftanın ilk günü

Haftanın İlk Günü.Pazar

1

Pazar (varsayılan)

Haftanın İlk Günü.Pazartesi

2

Pazartesi

Haftanın İlk Günü.Salı

3

Salı

Haftanın İlk Günü.Çarşamba

4

Çarşamba

Haftanın İlk Günü.Perşembe

5

Perşembe

Haftanın İlk Günü.Cuma

6

Cuma

Haftanın İlk Günü.Cumartesi

7

Cumartesi

Makronun kodundan da görüldüğü gibi, Pazartesiyi haftanın ilk günü olarak belirtmek için Weekday(i, 2) kullandık.

Biçim işlevi

Format işlevi, girdi olarak bir tarih ifadesini alır ve onu biçimlendirilmiş bir dize olarak döndürür.

Biçim işlevinin sözdizimi

Biçim(Tarih_Değeri,biçim)

Tarih_Değeri tarih veri türünün değerini belirtir.

Biçim ne tür bir tarih biçiminin gerekli olduğunu belirtmek için dize değerini kullanır.

Aşağıdaki tablo, gerekli tarih/saat biçimlerini oluşturmak için kullanılabilecek bazı popüler karakterleri tanımlar:

Karakter

Açıklama

NS

günü başında sıfır olmadan bir sayı olarak görüntüler (1 - 31)

dd

günü, başında sıfır olan bir sayı olarak görüntüler (01 - 31)

ddd

günü bir kısaltma olarak görüntüler (Paz - Cts)

dddd

günü tam ad olarak görüntüler (Pazar - Cumartesi)

w

haftanın gününü sayı olarak görüntüler (Pazar için 1'den Cumartesi için 7'ye kadar)

ww

yılın haftasını sayı olarak görüntüler (1 - 54)

m

ayı, başında sıfır olmadan (1 - 12) bir sayı olarak görüntüler

mm

ayı, başında sıfır olan bir sayı olarak görüntüler (01 - 12)

mmm

ayı kısaltma olarak görüntüler (Ocak - aralık)

mmmm

ayı tam ay adı olarak görüntüler (Ocak - Aralık)

Q

yılın çeyreğini sayı (1 - 4) olarak görüntüler

y

yılın gününü sayı olarak görüntüler (1 - 366)

yy

yılı 2 basamaklı bir sayı olarak görüntüler (00 - 99)

yyyy

yılı 4 basamaklı bir sayı olarak görüntüler (100 - 9999)

H

saati, başında sıfır olmadan bir sayı olarak görüntüler (0 - 23)

hh

saati, başında sıfır olan bir sayı olarak görüntüler (00 - 23)

n

dakikayı başında sıfır olmadan bir sayı olarak görüntüler (0 - 59)

nn

dakikayı, başında sıfır olan bir sayı olarak görüntüler (00 - 59)

s

saniyeyi başında sıfır olmadan bir sayı olarak görüntüler (0 - 59)

ss

saniyeyi, başında sıfır olan bir sayı olarak görüntüler (00 - 59)

Her hafta sonunda boş satır bırakmak için hafta içi fonksiyonunu kullanarak Pazarları kontrol ettik ve bir sonraki satır boş kalacak şekilde “StartingRow” değişkeninin değerini 1 artırdık.

Makronun kodunda görüldüğü gibi Format fonksiyonunu iki defa farklı şekillerde kullandık. İlk olarak, haftanın gününü almak için Format(i, "ddd") kullandık ve ikinci olarak, tarihi gg.aa.yyyy formatında almak için Format(i, "dd.mm.yy") kullandık.

Kod açıklaması

Çalışma Sayfası Olarak Yeni Çalışma Sayfası Karart

NewWorksheet = Çalışma Sayfaları olarak ayarlayın.Add

Yukarıdaki kod, Çalışma Sayfası nesne adını “NewWorksheet” olarak bildirmek için kullanılır. Worksheets.Add yöntemi, Worksheets koleksiyonuna yeni çalışma sayfasını eklemek için kullanılır. Set ifadesi, bildirilen nesneyi yeni eklenen sayfayla başlatmak için kullanılır.

i için = Başlangıç ​​Tarihinden Bitiş Tarihine

FOR döngüsü, başlangıç ​​tarihinden bitiş tarihine kadar döngü yapmak için kullanılır.

Hafta içi(i, 2) < 6 ise

IF deyimi, koşulu kontrol etmek ve koşula göre kodu yürütmek için kullanılır. Yukarıdaki koşul, Hafta içi işlevi tarafından değer dönüşünü kontrol edecektir. 6'dan küçükse, EĞER koşulu doğru döner ve EĞER deyiminin içindeki kod yürütülür. Aksi takdirde atlanacaktır.

Başlangıç ​​Satırı = 1

Başlangıç ​​Satırı = Başlangıç ​​Satırı + 1

StartRow değişkeni, çalışma sayfasındaki satırlar arasında gezinmek için kullanılır. Başlangıçta, değişken ilk satıra başlatılır. EĞER ifadesinin her başarılı yürütülmesiyle, değişken değeri sayfada bir sonraki satıra taşınarak 1 artırılır.

Hücreler(Başlangıç ​​Satırı, 1)

Cells özelliği, çalışma sayfasındaki belirli bir hücreye başvuruda bulunmak için kullanılır. Cells(row_number,column_number) parametre olarak belirli bir satır numarası ve sütun numarası girilerek çalışma sayfasındaki herhangi bir hücreye başvuruda bulunmak için kullanılabilir. Cells(StartingRow, 1) kodunda, 1 ilk sütunu belirtir ve “StartingRow” değişkeni satır numarasını tanımlar.

Makroda kodlarla birlikte yorumlara da yer verdiğim için kodlar kolayca anlaşılabilir.

Lütfen kod için aşağıdan takip edin

 Seçenek Explicit Sub ExtractWeekdays() 'Dim StartDate As Date, EndDate As Date olarak iki Tarih veri türü değişkeni bildiriliyor 'Çalışma sayfası değişkeni Dim NewWorksheet As Worksheet Dim StartRow, i As Long 'Çalışma sayfasından başlangıç ​​tarihi ve bitiş tarihi değerleri alınıyor StartDate = Sheets( "Makro").Range("J8").Value EndDate = Sheets("Makro").Range("J9").Value 'Çıktı için başlangıç ​​satır numarasının başlatılması StartRow = 1 'Yeni çalışma sayfası ekleme Yeni Çalışma Sayfası Seti = Çalışma Sayfaları. Add For i = StartDate To EndDate 'Hafta içi mi yoksa hafta içi mi olduğunu kontrol etmek için Hafta içi yöntemini kullanarak ve Hafta içi(i, 2) < 6 Sonra 'Yeni eklenen çalışma sayfasına değer ekleme' Tarih değerini biçimlendirmek için Format yöntemi kullanılır NewWorksheet.Cells( StartRow, 2) = Format(i, "dd.mm.yy") NewWorksheet.Cells(StartingRow, 1) = Format(i, "ddd") 'Bir sonraki satıra geçmek için StartRow değişken değeri güncelleniyor StartRow = StartRow + 1 End Eğer 'Hafta sonu için boş satır ekleme Eğer Hafta içi(i, 2) = 7 ise, Başlangıç ​​Satırı = Başlangıç ​​Satırı + 1 Bitiş Eğer N ise ext i Set NewWorksheet = Nothing End Sub 

Bu blogu beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.

Sizden haber almayı çok isteriz, işimizi nasıl geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın