Excel koşullu biçimlendirme tarihi hafta sonu / tatil öncesi


1

Bordro takvimi oluşturmaya çalışıyorum. Ayın 15'inde ve son gününde ayda iki kez ödeme alıyoruz, ancak hiçbir zaman hafta sonu veya Cuma günleri. 15. ya da son gün bir hafta sonu düşerse, maaş günü bir önceki Cuma'ya kaydırılır. 15'inci veya son gün Cuma günü düşerse, maaş günü bir önceki Perşembe'ye kaydırılır.

Maaş günü hücrelerini kırmızı yapmak ve tüm yıl boyunca bunu yapmak için nasıl koşullu bir biçimlendirme işlevi yazardınız? Veri seti, bir çalışma sayfasındaki bir yıllık takvimin tarihleridir. Excel 2016 kullanıyorum.


(1) Her ay ayda iki kez para alıyorsun, değil mi? Ve asla bir haftasonunda (her zaman bir önceki Cuma'ya kaymıştır), değil mi? Sorunun ilk ifadesi bunu tamamen netleştirmedi. (2) Hangi Excel sürümünü kullanıyorsunuz? Lütfen yorumlara cevap vermeyin; Düzenle Sorunuzu daha net ve daha eksiksiz hale getirmek için. Kullanmakta olduğunuz Excel sürümü için etiketi ekleyin.
G-Man

Yanıtlar:


1

Maaş günü, sekiz olası günden biri olabilir:

  • 12'sinde (13'ünde iyi cuma ise, çünkü o zaman 13., 14. ve 15. üç günlük bir haftasonu oluştururlar)
  • 13. (haftanın son çalışma günü ise) * )
  • 14. (haftanın son çalışma günü ise) * )
  • 15. (eğer bir iş günü ise * )
  • ayın sondan 4. gününe (eğer sondan son güne İyi Cuma ise, çünkü o ayın son üç günü üç günlük bir hafta sonu oluşturur)
  • ayın 3.-son günü (haftanın son iş günü ise) * )
  • ayın sondan ikinci günü (haftanın son çalışma günü ise) * )
  • ayın son günü (iş günü ise * )

__________
* Çalışma günü pazartesiden cumaya İyi Cuma hariç .

Excel 2013’te WEEKDAY( tarih , 2) eğer 1 döndürür date Pazartesi,…, 7 ise date Pazar Bu son bir uzatma olarak gösterilir; sizin için işe yaramazsa, söyleyin, ve onun etrafında çalışabiliriz. Bunu kullanarak WEEKDAY fonksiyonu, ve EOMONTH Bize ayın son gününü söyleyen işlev, yukarıdaki listeyi aşağıdaki formüle çevirebiliriz:

=AND(OR(AND(DAY(A1)=12,A1+1=F$1), AND(DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(DAY(A1)=15,WEEKDAY(A1,2)<=5), AND(EOMONTH(A1,0)-A1=3,A1+1=F$1), AND(EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1)), AND(A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5)), A1<>F$1)

buradaki iyi cuma tarihi (14 nisan 2017) (el ile) hücreye girildi F1.

Bu formül kabaca kırılabilir

=AND( OR( AND( bir şey 1 ), VE( bir şey 2 ), VE( bir şey 3 ),           VE( bir şey 4 ), VE( bir şey 5 ), VE( bir şey 6 )         ), bir şey 7 )

nerede

  • bir şey 1 olduğu DAY(A1)=12,A1+1=F$1, ilk kurşun için hangi testler (Ertesi gün iyi cuma olduğunda, ayın 12. günü perşembe).
  • bir şey 2 olduğu DAY(A1)>=13,DAY(A1)<=14,OR(WEEKDAY(A1,2)=5,A1+1=F$1), ikinci ve üçüncü mermiler için hangi testler yapıldı? (Cuma günleri 13. veya 14. günler, Cuma gününden önceki gün (Perşembe)
  • bir şey 3 olduğu DAY(A1)=15,WEEKDAY(A1,2)<=5), hangi dördüncü mermi için testler (hafta içi 15).
  • bir şey 4 olduğu EOMONTH(A1,0)-A1=3,A1+1=F$1, Beşinci mermi için hangi testleri (Ertesi gün Good Friday olduğunda, ayın sonundan 4. gününe kadar).
  • bir şey 5 olduğu EOMONTH(A1,0)-A1<=2,EOMONTH(A1,0)-A1>=1,OR(WEEKDAY(A1,2)=5,A1+1=F$1), 6. ve 7. mermilere uygulanan testler (Ayın 2. veya 3.-son günü, bir cuma günü veya iyi cumadan önceki gün).
  • bir şey 6 olduğu A1=EOMONTH(A1,0),WEEKDAY(A1,2)<=5, Hangi sekizinci mermi için testler (ayın son günü, bir hafta içi).
  • bir şey 7 olduğu A1<>F$1, Bugün için iyi Cuma günleri için testler yapıyor ve hariç tutuyor. Bu test olmadan, vurgulayacağız (renk / gölge) 13 Nisan Perşembe ve 14 nisan cuma

Bunu test etmek için ayarlamak isteyebilirsiniz F1 takip eden tarihlerin her birine 2017 için doğru günlerin vurgulandığını doğrulayın.

  • Bu yılki gerçek Cuma, 14 Nisan, Hangi güçleri öder 13 Nisan Perşembe günü.
  • Maaş günü 12 Ocak Perşembe olmaya zorlayacak 13 Ocak
  • 15 Eylül (veya 15 Aralık), Bu da maaş günü 14 perşembe olmaya zorlayacak.
  • 28 Nisan Cuma, maaş günü 27 Nisan Perşembe olmaya zorlayacak.
  • 29 Eylül, maaş günü 28 Eylül Perşembe olmaya zorlayacak.
  • 31 Mart (veya 30 Haziran), bu da maaş gününü o ayın 2 - son gününde olmaya zorlayacak.

Not: eğer F1 Cuma olmayan bir tarihe ayarlanmışsa, yanlış sonuçlar (örneğin, bir ayda ikiden fazla maaş günü) görüntülenecek.


Formülü denedim ama işe yaramadı. Ayrılmayacağım ve neyin yanlış olduğunu çözemediğimden emin olacağım. Bu da daha iyi anlamama yardımcı olacak.
Michael Harris

İşe yaradı. Teşekkürler. Numaralarımı tarih olarak biçimlendirmeye yardımcı oldu!
Michael Harris

Bir komplikasyon keşfettim. Bu yıl 14 Nisan olan İyi Cuma günlerimiz var. Bu nedenle, 13 Nisan Perşembe günü maaş alacağız. Sanırım aynı şey ayın sonunda da gerçekleşebilir. İyi Cuma gününü hesaplayan bir formül var. Bunu dikkate almak için bir yolu var mı?
Michael Harris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.