Excel - วันและวันที่ของเดือน


0

ฉันลองสูตร "วันที่" ไม่กี่ครั้ง แต่ไม่สามารถใช้งานได้

นี่คือปัญหาของฉัน:

ฉันต้องการตั้งค่าสเปรดชีตที่จะอนุญาตให้ผู้ใช้พิมพ์ใน A1 - เดือนและปี

ฉันต้องการให้สเปรดชีตเติมคอลัมน์ A โดยอัตโนมัติด้วย "วัน" ของเดือนเช่น หากเดือนนั้นเริ่มต้นในวันพุธวันพุธจะเป็นวันแรก ฉันต้องการให้คอลัมน์ B เติมวันที่เช่น 01/12/2018 (รูปแบบสหราชอาณาจักร)

นอกจากนี้ฉันต้องการให้ละเว้นวันอาทิตย์ ฉันมีคู่มือรุ่นนี้ซึ่งฉันจะต้องพิมพ์ค่าในแต่ละเดือน แต่ฉันต้องการจะทำมันโดยอัตโนมัติเพราะมันจะต้องทำ 80 ครั้งและฉันไม่ต้องการให้มีการเติมด้วยตนเองก่อนจากนั้นจึงคัดลอกและวาง ครั้ง

ข้อเสนอแนะใด ๆ


รูปแบบของ A1 จะเป็นอย่างไร ต.ค. 2561, 10/18 มีการเปลี่ยนแปลงอื่น ๆ บ้างไหม? หรืออาจเป็นวันแรกของเดือน 18/10/01? หากใช้รูปแบบตัวเลขและเดือนก่อนถึงเดือนตุลาคมจะมีค่า 0 ก่อนหน้าหรือไม่ 01/18 หรือ 1/18
Forward Ed

คำตอบ:


1

สมมติว่าคุณป้อนเข้าสู่เซลล์ A1 สำหรับเดือนและปีเป็นรายการตัวเลขเช่น 01/18, 1/18, 01/2018 หรือ 1/2018 คุณสามารถใช้สูตรต่อไปนี้เพื่อพัฒนารายการของคุณ

เริ่มต้นด้วยการวางสูตรต่อไปนี้ใน B3

=DATE(RIGHT(A1,LEN(A1)-FIND("/",A1)),LEFT(A1,FIND("/",A1)-1),1)+(WEEKDAY(DATE(RIGHT(A1,LEN(A1)-FIND("/",A1)),LEFT(A1,FIND("/",A1)-1),1))=1)

ดูเหมือนจะซับซ้อนเล็กน้อย แต่มีสาเหตุมาจากการพยายามจัดการกับ 4 รายการวันที่แตกต่างที่เป็นไปได้ใน A1 หากคุณมีรูปแบบการป้อนวันที่ที่แตกต่างกันจะต้องใช้สูตรที่แตกต่างกันในการพัฒนาวันที่ในช่วงเดือนแรก

ในสูตรข้างต้นโดยทั่วไปแล้วจะพบ "/" และใช้ตำแหน่งเพื่อกำหนดจำนวนของสตริงที่จะแยกออกจากกันเพื่อคว้าตัวเลขสำหรับเดือนและปีตามลำดับ หลังจากจับตัวเลขในเดือนและปีข้อมูลจะถูกนำไปใส่ในสูตร DATE ซึ่งกำลังค้นหาข้อมูลในรูปแบบต่อไปนี้:

=DATE(year, month, day)

เนื่องจากเป็นที่ทราบกันว่าวันที่เป็นวันเริ่มต้นของเดือนที่กำลังถูกตรวจสอบตั้งวัน = 1 ส่วนถัดไปของสมการ WEEKDAY กำหนดวันของสัปดาห์ ถ้าวันของสัปดาห์คือวันอาทิตย์วันแรกของเดือนจะต้องเพิ่มขึ้น 1 เนื่องจากผลลัพธ์บูลีนของ TRUE เท่ากับ 1 ในการดำเนินการทางคณิตศาสตร์ของ Excel และ FALSE เท่ากับ 0 ซึ่งเป็นการเพิ่มวันธรรมดา () = 1 ทำกับสูตรสำหรับการพิจารณาวันแรกของเดือน

เมื่อคุณมีเมล็ดสำหรับการเริ่มต้นรายการของคุณคุณต้องเพิ่ม 1 ลงในวันที่สำหรับแถวถัดไปและเพิ่มอีก 1 ในวันที่คือแถวด้านบนคือวันเสาร์ นอกจากนี้คุณต้องการให้แน่ใจว่าค่าวันที่ใหม่ของคุณไม่เกินสิ้นเดือนและสำหรับขั้นตอนของฉันฉันต้องการตรวจสอบให้แน่ใจว่าแถวด้านบนไม่ว่างเปล่า ใช้สูตรต่อไปนี้ใน B4 และคัดลอกลงไปมากพอเพื่อให้แน่ใจว่าคุณครอบคลุมวันที่ที่เป็นไปได้สูงสุด

=IF(B3<>"",IF(B3+1+(WEEKDAY(B3)=7)>EOMONTH($B$3,0),"",B3+1+(WEEKDAY(B3)=7)),"")

ที่จะสร้างรายการของวันที่ข้ามวันอาทิตย์

คุณมีทางเลือกสองทางในการแสดงวันในสัปดาห์ ตัวเลือกที่ 1 คือการทำกับสูตร โดยทั่วไปสูตรต่อไปนี้จะใช้วันที่จากคอลัมน์ B และจัดรูปแบบค่าเพื่อแสดงวันในสัปดาห์เป็นสตริงเท่านั้น ใน A3 ใช้สูตรต่อไปนี้และคัดลอก:

=TEXT(B3,"DDDD")

OR

=IF(B3<>"",TEXT(B3,"DDDD"),"")

สมการที่สองจะแสดงเป็นค่าว่างหากคุณปิดท้ายการคัดลอกสูตรที่ผ่านมาในสูตร B และเลิกอ้างอิงถึงเซลล์ว่างแทนเซลล์ที่มี ""

POC


1

ป้อนค่าเช่น "3 2020" ในเซลล์ A1 และเรียกใช้:

Sub INeedDates()
    Dim A1 As Range: Set A1 = Range("A1")
    Dim d As Date, i As Long

    i = 2
    arr = Split(A1, " ")
    d = DateSerial(arr(1), arr(0), 1)

    While CInt(Month(d)) = CInt(arr(0))
        If Format(d, "dddd") <> "Sunday" Then
            Cells(i, "A").Value = Format(d, "dddd")
            Cells(i, "B").Value = d
            Cells(i, "B").NumberFormat = "d/m/yyyy"
            i = i + 1
        End If
        d = d + 1
    Wend
End Sub

enter image description here


0

เมื่อฉันทำ (ราง) สิ่งที่คล้ายกันโดยทั่วไปฉันต้องการแยกอินพุตและเดือนแยกต่างหากเพื่อให้ง่ายสำหรับผู้อื่นที่จะใช้ในภายหลัง (ฉันเห็นคนจำนวนมากที่มีปัญหาในการป้อนวันที่อย่างถูกต้องใน Excel อย่างน่าประหลาดใจ)

ฉันแนะนำการตั้งค่าต่อไปนี้: (ขออภัยเกี่ยวกับตัวแบ่งบรรทัดบางสูตรเหล่านี้ยาวเกินไปสำหรับหนึ่งบรรทัดในตารางนี้)

╔════╦═════════════════════════════════════════════════╦════════════════════════════════╗
║CELL║                   DATA/FORMULA                  ║               COMMENTS         ║
╠════╬═════════════════════════════════════════════════╬════════════════════════════════╣
║    ║                                                 ║                                ║
║ A1 ║  "Month"                                        ║ Locked cell with bold, centered║
║    ║                                                 ║ text, yellow fill, and red bor-║
║    ║                                                 ║ der on left, right & top sides ║
║    ║                                                 ║                                ║
║ B1 ║  "Year"                                         ║ Locked cell with bold, centered║
║    ║                                                 ║ text, yellow fill, and red bor-║
║    ║                                                 ║ der on left, right & top sides ║
║    ║                                                 ║                                ║
║ A2 ║  11                                             ║ Unlocked cell with Data Valid- ║
║    ║                                                 ║ ation requiring a whole number ║
║    ║                                                 ║ from 1 to 12 (inclusive), right║
║    ║                                                 ║ justified with red border on   ║
║    ║                                                 ║ left, right & bottom sides     ║
║    ║                                                 ║                                ║
║ B2 ║  2018                                           ║ Unlocked cell with Data Valid- ║
║    ║                                                 ║ ation requiring a whole number ║
║    ║                                                 ║ from 1 to 12 (inclusive), left ║
║    ║                                                 ║ justified with red border on   ║
║    ║                                                 ║ left, right & bottom sides     ║
║    ║                                                 ║                                ║
║ A3 ║  "Day"                                          ║ Locked cell, formatted as      ║
║    ║                                                 ║ heading to below table         ║
║    ║                                                 ║                                ║
║ B3 ║  "Date"                                         ║ Locked cell, formatted as      ║
║    ║                                                 ║ heading to below table         ║
║    ║                                                 ║                                ║
║ A4 ║  =IF(B4="","",TEXT(B4, "DDDD"))                 ║ This shows the name of the day ║
║    ║                                                 ║ of the date found in cell B4   ║
║    ║                                                 ║                                ║
║ B4 ║ =IF(WEEKDAY(DATE(B2, A2, 1))-1, DATE(B2, A2, 1),║ This picks the date of the 1st ║
║    ║  DATE(B2, A2, 2))                               ║ day of the month chosen above, ║
║    ║                                                 ║ unless it's a Sunday, then it  ║
║    ║                                                 ║ is the following day (Monday)  ║
║    ║                                                 ║                                ║
║ A5 ║  Copy A4 to these cells                         ║ As you copy A4 to these cells  ║
║ to ║                                                 ║ Excel will automatically alter ║
║ A29║                                                 ║ each to reference the cell in  ║
║    ║                                                 ║ column B of this row           ║
║    ║                                                 ║                                ║
║ B5 ║ =IF(B4="","",IF(IF(WEEKDAY(B4+1)-1,B4+1,B4+2)>= ║ This picks the date after B4   ║
║    ║ EOMONTH(B4,0),"",IF(WEEKDAY(B4+1)-1,B4+1,B4+2)))║ unless it's a Saturday, then it║
║    ║                                                 ║ picks the next Monday, unless  ║
║    ║                                                 ║ it would go into the next month║
║    ║                                                 ║                                ║
║ B6 ║  Copy B5 to these cells                         ║ As you copy B5 to these cells, ║
║ to ║                                                 ║ Excel will automatically alter ║
║ B29║                                                 ║ each one to reference the cell ║
║    ║                                                 ║ above it instead of B4         ║
╚════╩═════════════════════════════════════════════════╩════════════════════════════════╝

และนี่คือภาพหน้าจอที่ใช้งานจริง:
Table in Excel displaying the days other than Sunday in November 2018 in both 'day name' and 'date' formats.


-2

ไม่ใช่วิธีแก้ปัญหาที่ลื่นที่สุด แต่ทำได้ง่ายและรวดเร็ว หากคุณป้อนวันแรกของเดือนในเซลล์ A1 ดังนั้นใน A2 เพิ่มสูตรนี้ ....

=IF(TEXT(A1,"DDDD")="Sunday",A1+1,A1)
then A3
=IF(TEXT(A2+1,"DDDD")="Sunday",A2+2,A2+1)

จากนั้นคุณสามารถคัดลอกสูตรจากที่นั่น มันทำให้วันอาทิตย์ออกจากรายการของคุณ สิ่งเดียวที่จะปรากฏในวันอาทิตย์เดียวคือวันที่คุณอาจเข้าสู่เซลล์ A1 ฉันทดสอบสิ่งนี้ในเดือนกันยายน 2019 เนื่องจากวันแรกคือวันอาทิตย์ มันกลับมา

02/09/2019
03/09/2019
04/09/2019
05/09/2019
06/09/2019
07/09/2019
09/09/2019

หวังว่าจะช่วย

แบรด


แทนการแปลงเป็นสตริงโดยใช้ weekday จะมีประสิทธิภาพมากขึ้น
phuclv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.