Page 1 of 1

ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใหม่

Posted: Sat Dec 14, 2013 10:48 pm
by kizarik
คือผมมีข้อมูลที่มันไม่ได้เป็นตารางชัดเจน กระจายตำแหน่ง แล้วจะทำปุ่มดึงไปอีก sheet แล้วอยากให้มันขึ้นบรรทัดใหม่ครับ
ลองทำไปพอ ทำการดึงเสร็จแล้วมา ลองทำ แล้วจะมาเติม offset ตามลิงค์ http://www.excelexperttraining.com/blog ... 000683.php แล้วงงว่า จะต้องใส่อย่างไรครับ

พอดีผมทำด้วยการใช้การ บันทึก Macro แล้วไปแก้ cell ตามเอาอย่างเดียวครับ

อยากจะขอคำแนะนำในการใส่ offset ใน macro send_data_bill ครับ พอดีผมเริ่มใช้ macro ครั้งแรกครับ ขอบคุณครับ

ใส่ข้อมูลในบิล แล้วอยากให้กด ปุ่ม บันทึกแล้วจะส่งข้อมูลไปที่ sheet Data ครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sun Dec 15, 2013 6:07 am
by snasui
:D เพื่อให้ง่าย ให้สร้าง Template มารับข้อมูลจากชีท Bil_A5 แล้วค่อยใช้ Macro หรือ VBA บันทึกข้อมูลไปยังชีท Data ดูตัวอย่างที่ Link นี้ครับ viewtopic.php?f=3&t=3155

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sun Dec 15, 2013 11:59 am
by kizarik
ขอบคุณครับ เดี๋ยวลองทำดูก่อนครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sun Dec 15, 2013 3:52 pm
by kizarik
ผมลองแก้ใหม่ โดยการเอาไปพักอีก ชีทData แล้วค่อยดึงไป save data พอ ลองทำแล้วติดว่า มัน error ตรงที่ off set ครับ ครั้งแรกทำแล้วมันได้
พอลองอีกครั้งไม่ได้ครับ ไม่แน่ใจว่าผิดตรงไหนครับ

แนบไฟล์ใหม่มาด้วยแล้วครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sun Dec 15, 2013 4:43 pm
by snasui
:D ลองตามนี้ครับ
  1. ที่ชีท Save Data เราจะใช้เป็น Template
    1. เซลล์ A4 คีย์สูตรเพื่อให้แสดงเป็นวัน เวลาปัจจุบัน
      =Now()
    2. เซลล์ B4 คีย์สูตรเพื่อ Link เอาค่าจากชีท Bill_A5 เซลล์ I9 มาใช้
      =Bill_A5!I9
    3. เซลล์ C4 คีย์สูตรเพื่อ Link เอาค่าจากชีท Bill_A5 เซลล์ D11 มาใช้
      =Bill_A5!D11
    4. เซลล์ที่เหลือให้ Link ในลักษณะเดียวกันจนครบตามต้องการ
  2. ปรับ Code ที่ Procedure send_data_bill เป็นตามด้านล่าง

    Code: Select all

    Sub send_data_bill()
        Sheets("Save Data").Range("a4:ad4").Copy
        Sheets("Data").Range("a" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End Sub

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Mon Dec 16, 2013 5:04 pm
by kizarik
ขอบคุณมากๆเลยครับ ในที่สุดผมก็ทำได้แล้ว :thup: :thup:

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sat Dec 21, 2013 4:16 pm
by kizarik
รบกวนอาจารย์อีกรอบครับ พอดีผมลองทำให้มันเก็บแยกไฟล์แล้วมันมีปัญหา macro error

แบบผมคือ ต้องการเก็บข้อมูล แยกปี เป็น folder และ เดือน เป็น file.xlsx eg; \2013\12.xlsx

folder หลัก ที่มี ไฟล์ bill อยู่ จะมี folder\file; data\template\template.xlsx เป็น template
จากนั้นพอกดปุ่ม จะให้เช็คว่ามี folder(ปี)/file(เดือน).xlsx ถ้ามีให้ส่งข้อมูลไป ถ้าไม่มีให้ copy template แล้วเปลี่ยนชื่อเป็นเดือนนั้นๆ

แนบไฟล์มาแล้ว รบกวนอาจารย์ช่วยดูหน่อยครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sat Dec 21, 2013 4:51 pm
by snasui
kizarik wrote:folder หลัก ที่มี ไฟล์ bill อยู่ จะมี folder\file; data\template\template.xlsx เป็น template
จากนั้นพอกดปุ่ม จะให้เช็คว่ามี folder(ปี)/file(เดือน).xlsx ถ้ามีให้ส่งข้อมูลไป ถ้าไม่มีให้ copy template แล้วเปลี่ยนชื่อเป็นเดือนนั้นๆ
:D ช่วยอธิบายข้อความที่ผมระบายสี ยกตัวอย่างให้เห็นว่าต้องการจะทำลักษณะใด เดือนนั้น ๆ ดูที่ไหนครับ

การตรวจสอบว่ามีหรือไม่มี Folder ดูตัวอย่างจาก Link นี้ Check existing and create new folder ควรปรับ Code มาเองก่อนติดตรงไหนค่อยมาถามกันต่อ โดยระบุบรรทัดที่เป็นปัญหาให้ชัดเจนจะได้ปรับปรุงต่อไปจากนั้นครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sat Dec 21, 2013 4:58 pm
by kizarik
ยกตัวอย่างเอานะครับ คือ เช่น D:\Data\2013\12.xlsx
แต่ถ้าตรวจแล้วไม่เจอจะ copy D:\Data\Template\template.xlsx แล้ว rename เป็น D:\Data\2013\12.xlsx
คือตรงนี้ผมทำมันผ่านแล้ว มัน copy และ เปลี่ยนชื่อเรียบร้อยแล้ว แต่มัน ติด error ที่

Sub Save_data_Bill()

Dim New_data_name
New_data_name = ActiveWorkbook.Path & "\" & "Data" & "\" & Year(Date) & "\" & month(Date) & ".xlsx"
ActiveWorkbook.Sheets("Data").Range("A4:AD4").Copy
Workbooks(New_data_name).Sheets("Save_Data").Range("a" & Rows.Count) _
.End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

Application.CutCopyMode = False

End Sub

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sat Dec 21, 2013 5:19 pm
by snasui
:D สั่งให้เปิด Workbooks(New_data_name) ขึ้นมาก่อนแล้วค่อย Copy และวางข้อมูลครับ

Re: ถามวิธีดึงข้อมูลที่ไม่เรียงลำดับกันไปชีทใหม่แล้วขึ้นแถวใ

Posted: Sat Dec 21, 2013 7:04 pm
by kizarik
:D :D :D ขอบคุณมากครับ อาจารย์ ผมตกม้าตายตอนจบง่ายๆ :lol: :lol: :lol:
ทำได้แล้วครับ
:thup: :thup: