____ذخیره سازی اطلاعات روز های مختلف و پردازش اطلاعات تمام فایل ها در یک فایل___؟!

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

    • 2019/06/03
    • 19

    [حل شده] ____ذخیره سازی اطلاعات روز های مختلف و پردازش اطلاعات تمام فایل ها در یک فایل___؟!

    ____ذخیره سازی اطلاعات روز های مختلف و پردازش اطلاعات تمام فایل ها در یک فایل___؟!
    نمی دانم این سوال به کدام بخش مرتبط می باشد، لطفا راهنمایی کنید سوال را در بخش مناسب ارسال کنم


    من هر روز یک فایل csv دریافت می کنم که می توانم به اکسل تبدیلش کنم!

    این فایل دارای یک هدر در سطر اول می باشد

    ستون اول نام اجناس است (سطر دوم:پفک سطر سوم: چیپس سطرچهارم ماست)

    ستون دوم قیمت ها هستند (سطر دوم:1500 سطر سوم:2000 سطر چهارم:5000 )

    ستون سوم وزن است (سطر دوم:150 سطر سوم :300 سطر چهارم:1000)

    ستون چهارم در فایل csv دریافتی وجود ندارد و خودمان باید اضافه و محاسبه کنیم||||||||||||| ستون چهارم قیمت هر گرم ( سطر دوم:سطر دوم ستون سوم تقسیم بر سطر دوم ستون دوم ||||سطر سوم :به همبن روال و.....)

    ستون پنجم را هم خودمان تولید می کنیم /////ستون پنجم :مجموع تمام وزن ها (سطر دو: 1450 سطر سوم:1450 سطر چهارم:1450)

    ستون ششم: میانگین قیمت :14 فایل گذشته (در ادامه توضیح میدهم)

    _________


    فردا فایل جدبدی با همان نام قبلی دریافیت می کنم
    اما اطلاعات تغییر کرده!

    سطر اول که هدر می باشد برابر است با همان فایلی که دیروز دریافت کرده بودم

    ستون اول نام اجناس است (سطر دوم:پفک سطر سوم: بادام زمینی سطرچهارم : پنیر. سطر پنجم :ماست)

    ستون دوم قیمت ها هستند (سطر دوم:1500 سطر سوم:2000 سطر چهارم:10000 سطر پنجم :6500)

    ستون سوم وزن است (سطر دوم:250 سطر سوم :300 سطر چهارم:1000 سطر پنجم :1300)

    ستون چهارم در فایل csv دریافتی وجود ندارد و خودمان باید اضافه و محاسبه کنیم||||||||||||| ستون چهارم قیمت هر گرم ( سطر دوم:سطر دوم ستون سوم تقسیم بر سطر دوم ستون دوم ||||سطر سوم :به همبن روال و.....)

    ستون پنجم را هم خودمان تولید می کنیم /////ستون پنجم :مجموع تمام وزن ها (سطر دو: sum of col 3 سطر سوم:sum of col 3 سطر چهارم:sum of col 3سطر پنجم:sum of col 3)

    ستون ششم: میانگین قیمت :14 فایل گذشته (در ادامه توضیح میدهم)

    -------
    حالا مشکل کار:
    ما 28 فایل جمع کرده آیم از 28 روز گذشته

    اکسل بیاید تمام این 28 فایل را بخواند و برای هریک از موارد متمایز در ستون اول، یک سطر ایجاد کند

    ستون اول سطر دوم:پفک سطر سوم: چیپس سطرچهارم ماست سطر پنجم :بادام زمینی سطر ششم:پنیر)

    اطلاعات تمام 28 روز را هم وارد کند خودکار

    ستون ششم: میانگین قیمت :14 فایل گذشته (تقریبا برای هر یک از اجناس 28 تا اطلاعات داریم ممکن است یک روز چیپس نداشته باشیم و مثلا 26 تا دیتا داشته باشیم، )

    در ستون ششم بیاید آخرین 14 تا فایل موجود را میانگین بگیرد و ثبت کند

    سپس فردا که روز 29 است، اطلاعات روز اول را پاک کند و تمام اطلاعات را یک روز به سمت چپ یا راست شیفت کند (روز 28 دیروز میشه روز 27 امروز) و اطلاعات امروز را بعنوان اطلاعات روز 28ثبت کند


    در ضمن مهم است که اگر امروز اطلاعات نداشتیم ثبت نشود اطلاعاتی و جایش طوری خالی بماند که وقتی از ستونی اوریج خواستیم بگیرم و چند دیتا خالی بود ایرادی پیش نیایید.
    Last edited by sooroosh1315; 2019/06/03, 15:02.
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    نوشته اصلی توسط sooroosh1315
    ____ذخیره سازی اطلاعات روز های مختلف و پردازش اطلاعات تمام فایل ها در یک فایل___؟!
    سلام،
    من فکر میکنم جهت درک بهتر نیاز هست که نمونه ای از فایلهاتون رو پیوست کنید.
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • sooroosh1315

      • 2019/06/03
      • 19

      #3
      نوشته اصلی توسط M_ExceL
      سلام،
      من فکر میکنم جهت درک بهتر نیاز هست که نمونه ای از فایلهاتون رو پیوست کنید.
      سلام و عرض ادب از توجه شما سپاسگزارم
      Click image for larger version

Name:	aOZhoP.png
Views:	1
Size:	45.1 کیلو بایت
ID:	135428
      فایل اصلی که مد نظر است ونتیجه کار
      Click image for larger version

Name:	0QBTrbpfZs.png
Views:	1
Size:	46.4 کیلو بایت
ID:	135429
      آخرین اطلاعات دریافت شده تا امروز
      Click image for larger version

Name:	EXCEL_e6OKU26JDs.png
Views:	1
Size:	34.5 کیلو بایت
ID:	135430
      اطلاعات روز قبل

      Click image for larger version

Name:	iKHApcy4oq.png
Views:	1
Size:	31.9 کیلو بایت
ID:	135431
      روز قبلترش

      Click image for larger version

Name:	EXCEL_t1ZMP61mym.png
Views:	1
Size:	29.5 کیلو بایت
ID:	135432
      کالاهای 4

      Click image for larger version

Name:	EXCEL_pFQujyI5ld.png
Views:	1
Size:	33.7 کیلو بایت
ID:	135433

      کالا5 (4 روز پیش)

      test.xlsx - 22 KB



      مشکل چیست؟
      اطلاعات فایل اصلی از پنج فایل دیگر گرفته شده است

      در فایل اصلی سطر تکراری نداریم ، مثلا در تمام فایل ها پفک وجود دارد و در فایل اصلی فقط یک سطر به پفک اختصاص داده شده

      (فایل اصلی توسط برنامه به وجود می آید کاملا بدون دخالت کاربر)

      در فایل اصلی تمام ستون ها وجود دارد(حتی اگر فقط یک روز در لیست ما وجود داشته باشد آن کالا)

      میانگین 3 روز فایل اصلی هوشمند است (اگر ستون فاقد دیتا باشد به جای تقسیم بر 3 تقسیم بر 2 یا 1 می کند برای میانگین گیری)

      فردا که برسد و اطلاعات جدید بیاید فایل اصلی خودش را هوشمندانه آپدیت می کند و قدیمی ترین اطلاعات را پاک می کند سپس اطلاعات را به سمت راست می برد یک سلول و اطلاعات جدید را در خانه b جایگذاری می کند.
      Last edited by sooroosh1315; 2019/06/04, 03:20.

      کامنت

      • M_ExceL

        • 2018/04/23
        • 677

        #4
        نوشته اصلی توسط sooroosh1315
        سلام و عرض ادب از توجه شما سپاسگزارم
        مشکل چیست؟
        اطلاعات فایل اصلی از پنج فایل دیگر گرفته شده است

        در فایل اصلی سطر تکراری نداریم ، مثلا در تمام فایل ها پفک وجود دارد و در فایل اصلی فقط یک سطر به پفک اختصاص داده شده

        (فایل اصلی توسط برنامه به وجود می آید کاملا بدون دخالت کاربر)

        در فایل اصلی تمام ستون ها وجود دارد(حتی اگر فقط یک روز در لیست ما وجود داشته باشد آن کالا)

        میانگین 3 روز فایل اصلی هوشمند است (اگر ستون فاقد دیتا باشد به جای تقسیم بر 3 تقسیم بر 2 یا 1 می کند برای میانگین گیری)

        فردا که برسد و اطلاعات جدید بیاید فایل اصلی خودش را هوشمندانه آپدیت می کند و قدیمی ترین اطلاعات را پاک می کند سپس اطلاعات را به سمت راست می برد یک سلول و اطلاعات جدید را در خانه b جایگذاری می کند.
        فایل زیر رو بررسی کنید :
        کد PHP:
        Sub test()
        Range("f2:F" Rows.Count).ClearContents
        Range
        ("B2:E12").Cut Destination:=Range("C2:F12")
        For 
        2 To 11
        If Range("a" i) = Sheets("new").Range("a" iThen
        Range
        ("b" i) = Sheets("new").Range("b" i)
        End If
        Next i
        End Sub 
        بعد از اجرای فایل ماکرو رو فعال کرده سپس داخل شیت "new" اطلاعات جدیدی وارد کنید سپس در شیت "asli" روی باتن "وارد کردن اطلاعات جدید"
        کلیک کنید.
        فایل های پیوست شده
        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
        [/CENTER]

        کامنت

        • sooroosh1315

          • 2019/06/03
          • 19

          #5
          دمت گرم آقا ستون ها را جابجا می کنه و میانگین هم بدرستی انجام میده

          اما وقتی در فایل جدید سطر محصول جدیدی ارایه میشه به فایل اصلی منتقل نمیشه:
          Click image for larger version

Name:	EXCEL_f3BgaXr8re.png
Views:	1
Size:	12.5 کیلو بایت
ID:	135437

          فایل اصلی لواشک و تخمک اضاف نشده
          Click image for larger version

Name:	6OE8LZ8cn9.png
Views:	1
Size:	19.8 کیلو بایت
ID:	135438

          و یک مشکل اساسی اینکه ترکیب محصولات جا به جا میشن (پفک همیشه سطر دوم نیست می تونه سطر اخر باشه) ولی قیمتش در فایل اصلی باید جلوی خودش وارد بشه

          Click image for larger version

Name:	EXCEL_kKkVEh0vDD.png
Views:	1
Size:	18.2 کیلو بایت
ID:	135439

          در فایل اصلی قیمتپنیر وارد نشده است
          Click image for larger version

Name:	EXCEL_RsurBKSKp7.png
Views:	1
Size:	19.1 کیلو بایت
ID:	135440

          کامنت

          • sooroosh1315

            • 2019/06/03
            • 19

            #6
            در اکسل امکان استفاده از آرایه وجود دارد؟

            مثلا در زبان جاوا آرایه a را تعریف می کنیم برای ذخیره سازی قیمت

            بعد می نویسم
            کد PHP:
            a[3
            قیمت روز 3 را به ما می دهد

            می خواهم فایل اصلی طولانی نشود و در ماکرو محاسبات انجام شود (چون تعداد ستون هایم واقعا زیاد است فایل که باید بررسی کنم 1000 سطر و 1600 ستون دارد.)

            فکر می کنم به یک پایگاه داده در ابتدا نیاز دارم:
            با توجه به جنس کارم بهترین نوع پایگاه داده چیست و چطور به صورت خودکار می توانم اطلاعاتم را در پایگاه داده ذخیره سازی کنم؟ و بعد فراخوانی کنم؟

            (لطفا اگر تاپیک یا سایت خوبی می شناسید معرفی کنید)
            Last edited by sooroosh1315; 2019/06/04, 16:14.

            کامنت

            • sooroosh1315

              • 2019/06/03
              • 19

              #7
              فکر می کنم به یک پایگاه داده در ابتدا نیاز دارم:
              با توجه به جنس کارم بهترین نوع پایگاه داده چیست و چطور به صورت خودکار می توانم اطلاعاتم را در پایگاه داده ذخیره سازی کنم؟ و بعد فراخوانی کنم؟

              (لطفا اگر تاپیک یا سایت خوبی می شناسید معرفی کنید)

              کامنت

              • sooroosh1315

                • 2019/06/03
                • 19

                #8
                نوشته اصلی توسط M_ExceL
                فایل زیر رو بررسی کنید :
                کد PHP:
                Sub test()
                Range("f2:F" Rows.Count).ClearContents
                Range
                ("B2:E12").Cut Destination:=Range("C2:F12")
                For 
                2 To 11
                If Range("a" i) = Sheets("new").Range("a" iThen
                Range
                ("b" i) = Sheets("new").Range("b" i)
                End If
                Next i
                End Sub 
                بعد از اجرای فایل ماکرو رو فعال کرده سپس داخل شیت "new" اطلاعات جدیدی وارد کنید سپس در شیت "asli" روی باتن "وارد کردن اطلاعات جدید"
                کلیک کنید.
                سلام M_ExceL

                امکانش هست ادامهی کد را هم خودتان بنویسید

                (تغییرات زیادی در حین کار باید شخصا انجام بدم گاها ممکنه 100 تا پوژه بشه و یکسال زمان ببره تا به یک حالت استیبل برسم فعلا اطلاعات دریافتی در حد آزمون و خطا هستن برای همین قصد پروژه ندارم)

                اما بسیار لطف می کنید اگر کدتان را گسترش دهید تا اشکالات کار بر طرف شود.

                کامنت

                • M_ExceL

                  • 2018/04/23
                  • 677

                  #9
                  نوشته اصلی توسط sooroosh1315
                  دمت گرم آقا ستون ها را جابجا می کنه و میانگین هم بدرستی انجام میده

                  اما وقتی در فایل جدید سطر محصول جدیدی ارایه میشه به فایل اصلی منتقل نمیشه:
                  [ATTACH=CONFIG]19093[/ATTACH]

                  فایل اصلی لواشک و تخمک اضاف نشده
                  [ATTACH=CONFIG]19094[/ATTACH]

                  و یک مشکل اساسی اینکه ترکیب محصولات جا به جا میشن (پفک همیشه سطر دوم نیست می تونه سطر اخر باشه) ولی قیمتش در فایل اصلی باید جلوی خودش وارد بشه

                  [ATTACH=CONFIG]19095[/ATTACH]

                  در فایل اصلی قیمتپنیر وارد نشده است
                  [ATTACH=CONFIG]19096[/ATTACH]
                  چک کنید :
                  کد:
                  Sub M_E()
                  With Application
                      .ScreenUpdating = False
                      .EnableEvents = False
                  lc1 = Sheets("new").Cells(Rows.Count, 1).End(3).Row
                      For i = 1 To lc1
                          Range("a100").End(3).Offset(1, 0) = Sheets("new").Cells(i + 1, 1)
                      Next i
                  
                      lr = Sheets("asli").Cells(Rows.Count, 1).End(3).Row
                      Range("$A$1:$A$" & lr).RemoveDuplicates Columns:=1, Header:=xlYes
                      lc2 = Sheets("asli").Cells(Rows.Count, 1).End(3).Row
                      Range("f2:F" & lc2).ClearContents
                      Range("B2:E" & lc2).Cut Destination:=Range("C2:F" & lc2)
                          For i = 2 To lc2
                              If Range("a" & i) = Sheets("new").Range("a" & i) Then
                                  Range("b" & i) = Sheets("new").Range("b" & i)
                              End If
                              If WorksheetFunction.Count(Range("b" & i & ":d" & i)) >= 1 Then
                                  Range("g" & i) = WorksheetFunction.Average(Range("b" & i & ":d" & i))
                              End If
                          Next i
                  .ScreenUpdating = True
                  .EnableEvents = True
                  End With
                  End Sub
                  فایل های پیوست شده
                  [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
                  [/CENTER]

                  کامنت

                  • M_ExceL

                    • 2018/04/23
                    • 677

                    #10
                    آخرین تغییرات :
                    کد:
                    Sub M_E()
                    With Application
                        .ScreenUpdating = False
                        .EnableEvents = False
                    lc1 = Sheets("new").Cells(Rows.Count, 1).End(3).Row
                        For i = 1 To lc1
                            Range("a100").End(3).Offset(1, 0) = Sheets("new").Cells(i + 1, 1)
                        Next i
                    
                        lr = Sheets("asli").Cells(Rows.Count, 1).End(3).Row
                        Range("$A$1:$A$" & lr).RemoveDuplicates Columns:=1, Header:=xlYes
                        lc2 = Sheets("asli").Cells(Rows.Count, 1).End(3).Row
                        Range("f2:F" & lc2).ClearContents
                        Range("B2:E" & lc2).Cut Destination:=Range("C2:F" & lc2)
                            For i = 2 To lc2
                                        For Z = 2 To lc1
                                            If Range("a" & i) = Sheets("new").Range("a" & Z) Then
                                                 Range("b" & i) = Sheets("new").Range("b" & Z)
                                             End If
                                        Next Z
                                    If WorksheetFunction.Count(Range("b" & i & ":d" & i)) > 0 Then
                                        Range("g" & i) = WorksheetFunction.Sum(Range("b" & i & ":d" & i)) / WorksheetFunction.Count(Range("b" & i & ":d" & i))
                                    End If
                            Next i
                    .ScreenUpdating = True
                    .EnableEvents = True
                    End With
                    End Sub
                    فایل های پیوست شده
                    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
                    [/CENTER]

                    کامنت

                    چند لحظه..