تغییر فرمت سل General به Time در vba

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • Ani_Goli

    • 2016/01/01
    • 9

    تغییر فرمت سل General به Time در vba

    من هم مشکلی تقریبا مشابه، در عملیات روی مقادیر زمانی دارم.
    مجموعه داده ای دارم در اکسل، که مقدار زمان در هر ردیف به صورت time با cellFormat از نوع h:mm:ss ذخیره شده
    به علت حجم بالای داده هام یک commandButton گذاشتم که می خواهم با آن در فیلد زمان، سطری را (مثلا سطرiام) پیدا کنم که فاصله اش از سطر اول ، 60 ثانیه باشد. اما با کد زیر هرچه محاسبات روی سلول های زمان انجام میدم چون نتیجه را از نوع General میده به دردم نمی خوره.چطور میتونم نتیجه کن کردن دو فیلد زمانی را به صورت عدد از جنس double بدست بیارم؟
    temp = Cells(i, 2) - Cells(k, 2
    MsgBox temp
    فایل های پیوست شده
  • Ani_Goli

    • 2016/01/01
    • 9

    #2
    لازم ب ذکر هست ک من داده ها را با فرمت سل، گزینه custom به فرمت [ss] و m]:ss[ هم بردم اما فقط نمایش آن هادر اکسل ب ثانیه تبدیل میشه و وقتی در کدنویسی VB با آن ها محاسبات انجام میخوایم بدیم، اکسل میاد همون فرمت General رو در نظر می گیره و مثلا اگر دو فیلد با مقادیر 10:22:11 و 10:23:17 را از هم کم کنم به جای جواب دادن به دقیقه و ثانیه، عددی مثلا ب این صورت میده 0.470098743 که به درد محاسبات من در ادامه کار نمیخوره. چون نمیدونم مقدار 60 ثانیه یا بیشتر، در این فرمت چند میشه.

    کامنت

    • Ani_Goli

      • 2016/01/01
      • 9

      #3
      اعداد بالا که به شکلک تبدیل شده اند عبارتند از:
      ده و بیست و دو دقیقه و 11 ثانیه
      ده و 23 دقیقه و 17 ثانیه

      کامنت

      • generalsamad
        مدير تالار توابع

        • 2014/06/22
        • 1496

        #4
        با سلام
        دوست عزیز لطفا سوال رو در تالار مربوطه بیان کنید
        پستها به تالار مربوطه انتقال داده شد

        این کد را امتحان کنید ببینید مشکلتون حل میشه
        کد PHP:
        Worksheets("Sheet1").Columns("A").NumberFormat "hh:mm:ss" 
        [CENTER]
        [SIGPIC][/SIGPIC]
        [/CENTER]

        کامنت

        • Ani_Goli

          • 2016/01/01
          • 9

          #5
          ممنون بابت انتقال پست، دفعات بعد دقت بیشتری می کنم.
          کد را با تغییر A به B چون برای داده های ستون B که زمان بود، می خواستم، اجرا کردم
          این کد، داده ها را به فرمت Time تبدیل می کند امااین کار را از طریق FormatCells انجام داده بودم دستی.
          مساله اصلی این است ک بعد از اینکه این فیلدهای زمان به hh:mm:ss تبدیل شدند، در کدنویسی نمیشه باهاشون مثل داده های time برخورد کرد
          بلکه اکسل میاد دادشونو از نوع general در نظر میگیره و محاسبات رو انجام میده (با اینکه hh:mm:ss هستند) و باز هم همون نتایج 0.4269721666667 را نشان میده.

          کامنت

          • Ani_Goli

            • 2016/01/01
            • 9

            #6
            حتا اگر میشد این time رو (که در VB چه با فرمول نویسی) کلا تبدیل به ثانیه هم کنم (با در نظر گرفتن مبدا ساعت 00:00:00 بامداد)خیلی خوب بودو کلا با همون ثانیه کار میکردم.

            کامنت

            • iranweld

              • 2015/03/29
              • 3341

              #7
              با سلام

              اگر مشکل فقط تبدیل به ثانیه میباشد میتوانید ابتدا با Replace تمامی ":" را به یک کارکتر دیگر تبدیل نمایید سپس با دستور left , mid , right اعداد ساعت و دقیقه را به ثانیه تبدیل نمایید و با عدد ثانیه آخر جمع نمایید

              و در نهایت اختلاف ثانیه هر سلول با سلول اول ستون را بدست آورید
              فایل های پیوست شده

              کامنت

              • Ani_Goli

                • 2016/01/01
                • 9

                #8
                ممنون از راه حلی ک پیشنهاد دادید. درست شد یعنی با این فرمول ک تبدیل ب ثانیه میشه دیگه واقعا در محاسبات VB هم همین عددی رو در نظر می گیره ک در جدول نمایش میده.
                فقط مگر برای اینکه مقدار تبدیل شده ساعت و دقیقه به ثانیه را با مقدار ثانیه جمع کنم، نباید اون آخر فرمول RIGHT(B2,2 باشه؟شما LEFT نوشتید دوباره، وقتی هم میام مینویسم RIGHT مقدار عجیبی بدست میاره.

                کامنت

                • Ani_Goli

                  • 2016/01/01
                  • 9

                  #9
                  مساله بالا هم درست شد. همون RIGHT را گذاشتم و مقدار را ک ب فرمت Time میداد تبدیل کردم ب General شد عدد مود نظر، یعنی ثانیه.
                  ممنونم.

                  کامنت

                  • iranweld

                    • 2015/03/29
                    • 3341

                    #10
                    نوشته اصلی توسط Ani_Goli
                    مساله بالا هم درست شد. همون RIGHT را گذاشتم و مقدار را ک ب فرمت Time میداد تبدیل کردم ب General شد عدد مود نظر، یعنی ثانیه.
                    ممنونم.
                    بله درست میفرماید اشتباه از من بود

                    کامنت

                    چند لحظه..