اضافه کردن عدد ماه به تاریخ در اکسل

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • farzadomid

    • 2016/01/11
    • 7
    • 36.00

    [حل شده] اضافه کردن عدد ماه به تاریخ در اکسل

    با سلام
    ضمن عرض خسته نباشید به دوستان
    میخواستم ببینم برای اضافه کردن یک عدد به تاریخ در اکسل چه باید کرد
    مثلا می خواهیم بدانیم 39 ماه به تا ریخ12/05/94 اضافه کنیم چه تاریخی می شود
    اگر عدد ماه مضربی از دوازده باشد مشکلی نیست با فرمولهای موجود میشود اگه نه چه باید کرد ؟
    با تشکر
  • generalsamad
    مدير تالار توابع

    • 2014/06/22
    • 1496

    #2
    با سلام
    نمیدونم چنین تابعی وجود داشته باشه که ماه رو بشه جمع زد
    ولی در صورتی که توابع شمسی روی سیستم داشته باشید میتونید به یک تاریخ خاص روز اضافه کنید که در آرگومان دوم وارد میشود

    کد PHP:
    =j_addday(a1;900;1
    این فرمول به تاریخی که در سلول a1 وارد شده 900 روز اضافه میکنه و تاریخ جدید رو بدست می آورد.

    برای سوالتون با ترکیب توابع میشه به جواب رسید ولی تابع زمانی که به تنهائی که این کار رو انجام بده من تا الان ندیدم
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • amir_ts

      • 2015/03/17
      • 1247

      #3
      با سلام
      این فایل رو خودم تهیه کردم ببینید.قسمت آبی رنگ رو می تونید مخفی کنید.
      کد PHP:
      =if(and(int($e$16/12)<>0;mod($e$16;12)<>0;mid($e$13;6;2)+mod($e$16;12)>12);mid($e$13;1;4)+int(e16/12)+1;if(and((mod($e$16;12)<>0);($e$16<12);mid($e$13;6;2)+mod($e$16;12)>12);mid($e$13;1;4)+1;mid($e$13;1;4)+int($e$16/12))) 
      فایل های پیوست شده
      [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

      کامنت

      • abootorab

        • 2014/10/17
        • 351

        #4
        نوشته اصلی توسط farzadomid
        با سلام
        ضمن عرض خسته نباشید به دوستان
        میخواستم ببینم برای اضافه کردن یک عدد به تاریخ در اکسل چه باید کرد
        مثلا می خواهیم بدانیم 39 ماه به تا ریخ12/05/94 اضافه کنیم چه تاریخی می شود
        اگر عدد ماه مضربی از دوازده باشد مشکلی نیست با فرمولهای موجود میشود اگه نه چه باید کرد ؟
        با تشکر
        با درود و تشکر از دوستان عزیز جناب generalsamad و جناب amir_ts
        بنده جهت رفع این مشکل قبلا تابعی شبیه توابع شمسی موجود، به نام J_ADDMONTH تهیه کردم، برای استفاده از این تابع یک ماژول ایجاد کنید و کد زیر را درون آن کپی کنید و سپس در محیط اکسل از آن استفاده نمایید.

        شکل کلی تابع:
        کد PHP:
        J_ADDMONTH(JdateNumber; [Mode]) 
        این تابع دارای 3 آرگومان می باشد:

        Jdate: تاریخ اولیه (اجباری)
        Number: تعداد ماه هایی که می خواهیم به تاریخ اولیه افزوده شود. (اجباری)
        [Mode]: نوع نوشتاری تاریخ جدید. به این صورت که اگر مقدار Mode را وارد نکنیم و یا مقدار آن را صفر قرار دهیم سال تاریخ بدست آمده بصورت 2رقمی نوشته میشود و اگر مقدار 1 وارد کنیم سال تاریخ بدست آمده بصورت 4رقمی نوشته میشود. (اختیاری)

        نکته:
        در این تابع روز تاریخ بدست آمده بر اساس ماه جدید بصورت خودکار تنظیم میگردد همچنین سالهای کبیسه نیز جهت تنظیم ماه دوازدهم سال کنترل میکند.
        به عنوان مثال تاریخ اولیه را 1394/05/31 وارد کنید، حال اگر 4 ماه به آن اضافه کنیم تاریخ جدید میشود 1394/09/30 ، در تاریخ جدید روز بر اساس ماه جدید نمی تواند 31 باشد و بصورت خودکار این تغییر اعمال میشود. یا اگر به تاریخ اولیه 7 ماه اضافه کنیم تاریخ جدید میشود 1394/12/29 و اگر به همین تاریخ اولیه 19 ماه اضافه کنیم تاریخ جدید میشود 1395/12/30 (چون سال 1395 سال کبیسه می باشد)

        مجوزها:
        در ورود تاریخ اولیه می بایست تاریخ را از راست به چپ و بصورت روز و ماه و سال وارد کنید (روز/ماه/سال) و فقط مجاز به استفاده از علامت / برای جدا کننده اجزای تاریخ هستید. در نحوه ورود اجزای تاریخ محدودیتی وجود ندارد و میتوانید روز و ماه را بصورت x یا xx و سال را بصورت x یا xx یا xxxx وارد کنید. در صورتیکه سال تاریخ را بصورت x یا xx وارد کنید و بخواهید سال تاریخ بدست آمده 4رقمی باشد (Mode=1) مبنای تاریخ سال 1300 در نظر گرفته میشود.

        کد تابع:
        کد PHP:
        Function J_ADDMONTH(Jdate As StringNumber As IntegerOptional Mode As Integer) As String
            Dim Slash1
        Slash2 As Integer
            Dim jRoz
        jMahjSal As String
            Dim RozMah 
        As Integer
            Dim Kbs 
        As Boolean
            
            On Error Resume Next
            Slash1 
        InStr(1Jdate"/")
            
        Slash2 InStr(Slash1 1Jdate"/")
            If 
        Slash1 Or Slash2 0 Then
                J_ADDMONTH 
        0
                
        Exit Function
            
        End If    
            
            
        jRoz Mid(JdateSlash2 1)
            
        jMah Mid(JdateSlash1 1Slash2 Slash1 1)
            
        jSal Mid(Jdate1Slash1 1)
            If 
        Len(jSal) <= 2 Then jSal jSal 1300
            
            
        If Number >= 0 Then
                
        For 1 To Number
                    jMah 
        jMah 1
                    
        If jMah 12 Then
                        jSal 
        jSal 1
                        jMah 
        1
                    End 
        If
                
        Next i
            
        ElseIf Number 0 Then
                
        For 1 To -(Number)
                    
        jMah jMah 1
                    
        If jMah 1 Then
                        jSal 
        jSal 1
                        jMah 
        12
                    End 
        If
                
        Next i
            End 
        If

            
        Select Case Val(jSalMod 33
                
        Case 1591317222630
                    Kbs 
        True
                
        Case Else
                    
        Kbs False
            End Select
            
            Select 
        Case jMah
                
        Case 7891011
                    
        If jRoz "31" Then jRoz "30"
                
        Case 12
                    
        If Kbs True Then
                        
        If jRoz "31" Then jRoz "30"
                    
        Else
                        If 
        jRoz "31" Or jRoz "30" Then jRoz "29"
                    
        End If
            
        End Select
            
            
        If Len(jRoz) < 2 Then jRoz "0" jRoz
            
        If Len(jMah) < 2 Then jMah "0" jMah
            
        If Len(jSal) < 2 Then jMah "0" jSal
            
            
        If Mode 1 Then
                J_ADDMONTH 
        jSal "/" jMah "/" jRoz
            
        ElseIf Mode 0 Then
                J_ADDMONTH 
        Right(jSal2) & "/" jMah "/" jRoz
            End 
        If
        End Function 

        امیدوارم خوب توضیح داده باشم و برای دوستان مفید واقع گردد.
        Last edited by abootorab; 2016/01/12, 02:18.

        کامنت

        • farzadomid

          • 2016/01/11
          • 7
          • 36.00

          #5
          با تشکر
          از دوستان

          کامنت

          • amir_ts

            • 2015/03/17
            • 1247

            #6
            با سلام
            دوست عزیز اگه مشکلی نیست، تیک حل شده رو بزنید.
            [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

            کامنت

            چند لحظه..