باز هم مشکل در محاسبه ساعت مرخصی

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

    • 2014/12/02
    • 130

    [حل شده] باز هم مشکل در محاسبه ساعت مرخصی

    با تشکر و سپاس از اساتید بزرگوار جناب آقای قاسمیان و جناب آقای مجید ... متاسفانه توی محاسبه مجموع مرخصی ساعتی که توی یک روز انجام شده ایراد داره .. مثلا دو تا مرخصی جداگانه که هر کدومشون 40 دقیقه باشه رو 80 دقیقه محاسبه میکنه .. که قاعدتا میبایست 1.20 بشه .. ممنون میشم ایراد رو رفع فرمایین.

    https://t.me/pump_upp
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    نوشته اصلی توسط mfr
    با تشکر و سپاس از اساتید بزرگوار جناب آقای قاسمیان و جناب آقای مجید ... متاسفانه توی محاسبه مجموع مرخصی ساعتی که توی یک روز انجام شده ایراد داره .. مثلا دو تا مرخصی جداگانه که هر کدومشون 40 دقیقه باشه رو 80 دقیقه محاسبه میکنه .. که قاعدتا میبایست 1.20 بشه .. ممنون میشم ایراد رو رفع فرمایین.

    http://forum.exceliran.com/showthrea...AE%D8%B5%DB%8C
    سلام دوست عزیز
    تا جایی که یادمه شما گفتین ساعت ها بصورت اعشاری باید باشه و ظاهرا خودتون یک تابع داشتین که تبدیل میکرد.
    اینکه میگین 80 دقیقه رو بنویسه یک ساعت و بیست دقیقه بستگی به فرمت سلول داره. فرمت اگه بصورت زیر باشه ساعت هم لحاظ میشه
    کد:
    h:mm

    کامنت

    • mfr

      • 2014/12/02
      • 130

      #3
      بله استاد ... برنامه جوریه که باید اعشار باشه ... ولی این جمع ساعت توی کارتکس میاد . و نوشتن ساعت مرخصی باید به ساعت و دقیقه باشه ممنون از وقتی که میزارین
      https://t.me/pump_upp

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط mfr
        بله استاد ... برنامه جوریه که باید اعشار باشه ... ولی این جمع ساعت توی کارتکس میاد . و نوشتن ساعت مرخصی باید به ساعت و دقیقه باشه ممنون از وقتی که میزارین
        لطف کنید فایل نهاییتون رو بذارین بررسی کنم

        کامنت

        • mfr

          • 2014/12/02
          • 130

          #5
          نوشته اصلی توسط Amir Ghasemiyan
          لطف کنید فایل نهاییتون رو بذارین بررسی کنم
          فایل نمونه خدمت اساتید محترم
          فایل های پیوست شده
          https://t.me/pump_upp

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            امیدوارم متوجه درخواستتون شده باشم
            یک تابع اضافه کردم که دقیقه رو به ساعت و دقیقه تبدیل کنه
            کد اصلیتون رو هم یک تغییر کوچیک دادم

            کد:
            Sub ExcelIran()
            code = Sheet7.Range("H31").Value
            Range("report").ClearContents
            Database = Range("database")
            For i = 1 To UBound(Database)
                If Database(i, 1) = code Then
                    q = Split(Database(i, 2), "/")
                    Y = q(0)
                    m = q(1)
                    D = q(2)
                    If Database(i, 6) = ChrW(1585) & ChrW(1608) & ChrW(1586) & ChrW(1575) & ChrW(1606) & ChrW(1607) Then
                        Sheet7.Cells(2 * m, D + 2) = 1
                    Else
                        If Sheet7.Cells(2 * m + 1, D + 2) > 0 Then
                            Sheet7.Cells(2 * m + 1, D + 2) = sumhour(Database(i, 5), Sheet7.Cells(2 * m + 1, D + 2))
                        Else
                            Sheet7.Cells(2 * m + 1, D + 2) = Database(i, 5)
                    End If
                End If
                 End If
            Next i
            End Sub
            
            
            Function sumhour(first, second)
            Dim f As Integer, s As Integer, sums As Integer, hour As Integer, minute As Integer
            f = first * 100
            s = second * 100
            sums = f + s
            hour = Int(sums / 60)
            minute = sums Mod 60
            sumhour = hour + minute / 100
            End Function

            کامنت

            • mfr

              • 2014/12/02
              • 130

              #7
              سلام استاد ... تست کردم تا زیر یکساعت درست حساب میکنه بالای یکساعت اشتباه محاسبه میکنه ... مثلا دوتا 40 دقیقه رو درست اما 1.59 بعلاوه 1.50 رو اشتباه
              https://t.me/pump_upp

              کامنت

              • Amir Ghasemiyan

                • 2013/09/20
                • 4598
                • 100.00

                #8
                نوشته اصلی توسط mfr
                سلام استاد ... تست کردم تا زیر یکساعت درست حساب میکنه بالای یکساعت اشتباه محاسبه میکنه ... مثلا دوتا 40 دقیقه رو درست اما 1.59 بعلاوه 1.50 رو اشتباه

                سلام دوست عزیز
                بله حق با شماست.
                من با کمک فانکشن های خودتون این مشکل رو حل کردم
                کد:
                Sub ExcelIran()
                code = Sheet7.Range("H31").Value
                Range("report").ClearContents
                Database = Range("database")
                For i = 1 To UBound(Database)
                    If Database(i, 1) = code Then
                        q = Split(Database(i, 2), "/")
                        Y = q(0)
                        m = q(1)
                        D = q(2)
                        If Database(i, 6) = ChrW(1585) & ChrW(1608) & ChrW(1586) & ChrW(1575) & ChrW(1606) & ChrW(1607) Then
                            Sheet7.Cells(2 * m, D + 2) = 1
                        Else
                            If Sheet7.Cells(2 * m + 1, D + 2) > 0 Then
                                Sheet7.Cells(2 * m + 1, D + 2) = sumhour(Time_To_Second(Database(i, 5)), Time_To_Second(Sheet7.Cells(2 * m + 1, D + 2)))
                            Else
                                Sheet7.Cells(2 * m + 1, D + 2) = Database(i, 5)
                        End If
                    End If
                     End If
                Next i
                End Sub
                
                
                
                
                Function sumhour(first, second)
                Dim f As Integer, s As Integer, sums As Integer, hour As Integer, minute As Integer
                sums = first + second
                hour = Int(sums / 60)
                minute = sums Mod 60
                sumhour = hour + minute / 100
                End Function

                کامنت

                • mfr

                  • 2014/12/02
                  • 130

                  #9
                  بسیار بسیار ممنونم ... آیا میشود کاری کرد که کارتکس master بر اساس data فیلتر شده عمل کنه ... مثلا توی data اردیبهشت رو فیلتر کنیم و توی master فقط اردیبهشت محاسبه بشه
                  https://t.me/pump_upp

                  کامنت

                  • mfr

                    • 2014/12/02
                    • 130

                    #10
                    کسی نیست جواب بده ؟؟؟؟؟؟؟؟؟
                    https://t.me/pump_upp

                    کامنت

                    • Amir Ghasemiyan

                      • 2013/09/20
                      • 4598
                      • 100.00

                      #11
                      نوشته اصلی توسط mfr
                      بسیار بسیار ممنونم ... آیا میشود کاری کرد که کارتکس master بر اساس data فیلتر شده عمل کنه ... مثلا توی data اردیبهشت رو فیلتر کنیم و توی master فقط اردیبهشت محاسبه بشه

                      کد:
                      Sub ExcelIran()
                      code = Sheet7.Range("H31").Value
                      Range("report").ClearContents
                      Set Database = Range("database")
                      For i = 1 To Database.Rows.Count
                          If Database(i, 1) = code And Database(i, 1).Rows.Hidden = False Then
                              q = Split(Database(i, 2).Value, "/")
                              Y = q(0)
                              m = q(1)
                              D = q(2)
                              If Database(i, 6) = ChrW(1585) & ChrW(1608) & ChrW(1586) & ChrW(1575) & ChrW(1606) & ChrW(1607) Then
                                  Sheet7.Cells(2 * m, D + 2) = 1
                              Else
                                  If Sheet7.Cells(2 * m + 1, D + 2) > 0 Then
                                      Sheet7.Cells(2 * m + 1, D + 2) = sumhour(Time_To_Second(Database(i, 5).Value), Time_To_Second(Sheet7.Cells(2 * m + 1, D + 2)))
                                  Else
                                      Sheet7.Cells(2 * m + 1, D + 2) = Database(i, 5)
                              End If
                          End If
                           End If
                      Next i
                      End Sub
                      
                      
                      Function sumhour(first, second)
                      Dim f As Integer, s As Integer, sums As Integer, hour As Integer, minute As Integer
                      sums = first + second
                      hour = Int(sums / 60)
                      minute = sums Mod 60
                      sumhour = hour + minute / 100
                      End Function

                      کامنت

                      چند لحظه..