:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

Data realtime แสดงด้วย pivot table จาก access query

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Data realtime แสดงด้วย pivot table จาก access query

#1

Post by godman »

คือผมอยากให้ sheet pivot summary แสดงข้อมูลจาก sheet แรกมาครับ แต่ปัญหาความต้องการคือให้ผู้ใช้ใส่เลข 3 ตัวท้ายของ part number หรือหมายงานชิ้นงาน เช่น 15695-04 ก็ใส่เพียง 695 เพราะ 04 ไม่เกี่ยวครับ แล้วให้ผู้ใช้สามารถเลือกวันวันที่ที่จะ updated ได้ด้วยครับ ไม่ทราบว่าต้องเขียน macro อย่างไรดีครับ ให้ผู้ใช้กรอกข้อมูล 2 ช่องบนนะครับ
Attachments
data report realtime.xls
file
(34 KiB) Downloaded 7 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#2

Post by snasui »

:D ลองดูตัวอย่างตามไฟล์แนบครับ โดยมีการให้ชื่อกับ Data ใช้ Code VBA ตามด้านล่าง ตรวจสอบข้อมูลตามเงื่อนไข หากเข้าเงื่อนไขให้แสดง True หากไม่เข้าเงื่อนไขให้แสดง False

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        r.Offset(, -2) = Worksheets("Pivot Summary").Range("B2") Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
    If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
        MsgBox "Can not found data."
        Exit Sub
    Else
        Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
    End If
Next r
MsgBox "Finish."
End Sub
Attachments
data report realtime.xls
(53.5 KiB) Downloaded 7 times
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#3

Post by godman »

ขอบคุณครับ อาจารย์ แต่ว่าต้องยอมรับว่าผมยังไม่ได้ลงลึกใน VBA ก็เลยต้องพึงพาอาจารย์ไปก่อน แต่เรื่องสูตรต่างๆที่เรียนไปผมก็นำไปต่อยอดครับ
แต่สำหรับกรณีนี้ ผมอาจจะให้ข้อมูลไม่ครบ หรืออธิบายไม่กระจ่าง คือ ที่อาจารย์ทำมาตรงเงืื่อนไข 100% ก็นำมา แต่ปัญหาคือผู้ใช้จำเวลาในระดับนาที ไม่ได้ นะสิครับ
ผมเลยคิดว่าควรจะเอาข้อมูล update ตั้งแต่ 6 ทุ่มจนถึง 6 ทุมของอีกวันคือเอาข้อมูลจาก 6 ทุ่มจนถึงเวลาปัจจุบัน ว่า data summary ยอดเท่าไหร่ครับและคำที่ลงท้ายด้วย xxx 3 ตัวหลังทั้งหมดครับ ผมได้ให้แนวทางคำตอบมาตามไฟล์แนบด้วยครับ ขอบพระคุณเป็ฯอย่างสูงครับ
Attachments
data report realtimerev1.xlsx
rev1
(31.31 KiB) Downloaded 4 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#4

Post by snasui »

:D ปรับ Code เป็นด้านล่าง ซึ่งเป็นการดูเฉพาะวันที่ ไม่ต้องดูเวลาครับ เนื่องจากงวดที่เวลาที่เป็นเงื่อนไขคือเวลา 1 วัน เริ่มหลังเที่ยงคืนจนถึงเที่ยงคืนอยู่แล้ว

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        DateValue(r.Offset(, -2)) = DateValue(Worksheets("Pivot Summary").Range("B2")) Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
    If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
        MsgBox "Can not found data."
        Exit Sub
    Else
        Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
    End If
Next r
MsgBox "Finish."
End Sub
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#5

Post by godman »

อาจารย์ครับ ผมลองใส่ 700 ลงไปข้อมูลมาไม่หมดครับ และถ้าผมต้องการใช้ช่อง วันที่ เวลา เป็น นับถึงวันที่ เวลา ณ ปัจจุบัน ต้องเขียนโค้ดยังไงครับ
Attachments
data report realtimerev2.xlsx
file
(28.65 KiB) Downloaded 4 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#6

Post by snasui »

:D ค่อย ๆ ถามตอบกันไปนะครับ เท่าที่ได้ตรวจสอบเงื่อนไข

B5 = 25/7/2011 14:33:52 (เงื่อนไขคือต้องเป็นวันที่ 25/7/2011)
F10 = 23/7/2011 19:29:23
F11 = 25/7/2011 9:43:43
F12 = 24/5/2011 4:16:00

ดังนั้นดึงมาได้รายการเดียวจึงถูกต้องแล้วครับ เพราะ F10 และ F12 ไม่เข้าเงื่อนไข
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#7

Post by snasui »

snasui wrote::D ปรับ Code เป็นด้านล่าง ซึ่งเป็นการดูเฉพาะวันที่ ไม่ต้องดูเวลาครับ เนื่องจากงวดที่เวลาที่เป็นเงื่อนไขคือเวลา 1 วัน เริ่มหลังเที่ยงคืนจนถึงเที่ยงคืนอยู่แล้ว

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        DateValue(r.Offset(, -2)) = DateValue(Worksheets("Pivot Summary").Range("B2")) Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
    If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
        MsgBox "Can not found data."
        Exit Sub
    Else
        Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
    End If
Next r
MsgBox "Finish."
End Sub
จาก Code ด้านบนยังไม่ถูกต้องเนื่องจากบรรทัดสับกันครับ ผมปรับมาให้ใหม่ตามด้านล่าง ซึ่งรวมทั้งการปรับให้ดูวันที่และเวลาจนถึงปัจจุบันแล้วครับ

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        (CDbl(r.Offset(, -2)) >= CDbl(Worksheets("Pivot Summary").Range("B2")) _
        And CDbl(r.Offset(, -2)) <= CDbl(Date + Time)) Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
Next r
If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
    MsgBox "Can not found data."
    Exit Sub
Else
    Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
End If
MsgBox "Finish."
End Sub

godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#8

Post by godman »

อาจารย์ครับ ใช่ครับ อาจารย์ทำถูกแล้วครับ
อยากให้ข้อมูลมันแสดงทั้งหมดไม่ว่าจะอยู่ของวันใหน เช่น คีย์ 720 ก็ให้มันเอาข้อมูลของวันที่ 23 กค 24 กค 27 กค จนถึงเวลานี้now จะต้องเปลี่ยน code อย่างไรบ้างครับ
Attachments
data report realtime.xls
filr
(184.5 KiB) Downloaded 2 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#9

Post by snasui »

godman wrote:อยากให้ข้อมูลมันแสดงทั้งหมดไม่ว่าจะอยู่ของวันใหน เช่น คีย์ 720 ก็ให้มันเอาข้อมูลของวันที่ 23 กค 24 กค 27 กค จนถึงเวลานี้now จะต้องเปลี่ยน code อย่างไรบ้างครับ
ใช้ Code ล่าสุดด้านบนและวันที่ต้องคีย์วันที่ 23/7/2011 ครับ เพื่อจะได้นำข้อมูลตั้งแต่ 23/7/2011 จนถึงปัจจุบันมาแสดง
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#10

Post by godman »

ผมลอง run ใส่ 695 มันขั้น errer ว่า run time errer 12 type mismatch ครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#11

Post by godman »

ผมแนบไฟล์มาด้วยครับ ลืมไป
Attachments
data report realtime.xls
errer
(184 KiB) Downloaded 3 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#12

Post by snasui »

:D บรรทัดที่ 392-406 คือต้นเหตุครับ

ผมปรับ Code ให้ใหม่ตามด้านล่างเพื่อให้ Run ได้แม้ว่าจะเกิด Error ครับ

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
On Error Resume Next
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        (CDbl(r.Offset(, -2)) >= CDbl(Worksheets("Pivot Summary").Range("B2")) _
        And CDbl(r.Offset(, -2)) <= CDbl(Date + Time)) Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
Next r
If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
    MsgBox "Can not found data."
    Exit Sub
Else
    Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
End If
MsgBox "Finish."
End Sub
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#13

Post by godman »

ผมลองรัน 695 มาเฉพาะของวันที่ 27 ครับ แต่ของอีก 2 วันไม่แสดงครับอาจารย์ ใช้มาโครใหม่แล้ว
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#14

Post by godman »

ผมลองใส่ 700 ก็ไม่มาครับ มีหลายหลายวัน ก่อนหน้า
Attachments
data report realtime.xls
file
(184 KiB) Downloaded 9 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#15

Post by snasui »

:D อีก 2 วันที่ว่าคือวันที่เท่าไรครับ :?:

สำหรับ Code ที่ผมเขียนนั้น เป็นการตรวจสอบตามด้านล่างครับ

ในเซลล์ B2 ชีท Pivot Summary กรอกวันที่ใดไว้ โปรแกรมจะดึงข้อมูลตั้งแต่วันนั้นจนถึงปัจจุบันครับ ถ้ากรอกวันที่ปัจจุบันก็ได้ข้อมูลเพียงวันปัจจุบันเท่านั้นครับ

ไม่ทราบว่าที่ต้องการเป็นแบบใด ขอรายละเอียดที่ชัดเจนอีกครั้งครับ อธิบายได้เต็มที่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31205
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Data realtime แสดงด้วย pivot table จาก access query

#16

Post by snasui »

:D ส่วน Code ด้านล่างนี้เป็นการตรวจสอบว่าในเซลล์ B2 ของชีท Pivot Summary เป็นวันที่เท่าไร ก็ให้ดึงข้อมูลของวันที่ก่อนหน้าจนกระทั่งถึงวันที่ในเซลล์ B2

Code: Select all

Sub FillData()
Dim rAll As Range
Dim r As Range
On Error Resume Next
With Worksheets("Data input")
    Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
    If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
        CDbl(r.Offset(, -2)) <= CDbl(Worksheets("Pivot Summary").Range("B2")) Then
            r.Offset(, 8) = True
    Else
            r.Offset(, 8) = False
    End If
Next r
If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
    MsgBox "Can not found data."
    Exit Sub
Else
    Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
End If
MsgBox "Finish."
End Sub
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#17

Post by godman »

ผมอาจจะสื่อสารคลาดเคลื่อน ผมต้องการให้วันในอดีตก่อนหน้า จนถึง วันนี้ เวลานี้ แสดงครับ แสดงว่า code บนสุดโอเค ครับ ขอบคุณครับ ผมลองดูครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#18

Post by godman »

ได้แล้วครับ แต่ผมอาจจะมีคำถามเพิ่มเติมในภายหลัง ครับ เกี่ยวกับการแสดงข้อมูลจาก access และการแสดงข้อมูลเลือก วันที่นี้แวลานี้ ถึง วันที่อื่นเวลาอื่น แล้วให้มันไปแสดงโดยขึ้นไฟล์ใหม่ แล้วให้ sheet หายไปคงเหลือแต่ sheet หลัก แต่ตอนนี้ขอบคุณมากครับ อาจารย์
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#19

Post by godman »

อ้างอิงจาก code ที่เกี่ยวข้องข้างบนครับ
Sub FillData()
Dim rAll As Range
Dim r As Range
On Error Resume Next
With Worksheets("Data input")
Set rAll = .Range("E2", .Range("E2").End(xlDown))
End With
For Each r In rAll
If CInt(Mid(r, 3, 3)) = Worksheets("Pivot Summary").Range("B1") And _
CDbl(r.Offset(, -2)) <= CDbl(Worksheets("Pivot Summary").Range("B2")) Then
r.Offset(, 8) = True
Else
r.Offset(, 8) = False
End If
Next r
If Application.CountIf(Worksheets("Data input").Range("M:M"), True) = 0 Then
MsgBox "Can not found data."
Exit Sub
Else
Worksheets("Pivot Summary").PivotTables(1).PivotCache.Refresh
End If
MsgBox "Finish."
End Sub
อาจารย์ครับจากตรงนี้ ถ้าผมเปลี่ยนเป็น -1 หมายความว่าให้เอาข้อมูลประวัติก่อนหน้าจนถึงวันที่เวลาตามที่เลือกในช่อง B2 ใช่ไหมครับ เพราะผมลองเปลี่ยนแล้วมันโอเค นำไปใช้ได้ไใช่ไหมครับ และนำไปประยุกต์ใช้ในเรื่องอื่นๆได้ด้วยใช่ไหมครับ ผมตื่นเต้นมากที่มันทำได้
CDbl(r.Offset(, -2)) <= CDbl(Worksheets("Pivot Summary").Range("B2")) Then
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: Data realtime แสดงด้วย pivot table จาก access query

#20

Post by godman »

ผมต้องรบกวนเพิ่มเติมครับ เนื่องจากผู้บังคับบัญชาต้องการให้แสดงข้อมูลจากวนที่....ถึงวันที่.....ครับ โดยให้คีย์ part number เต็ม ครับ ต้องเปลี่ยนโค้ดอย่างไรบ้างครับ ขอขอบคุณมากนะครับที่ให้ code ผมจะลองศีกษา โค้ดอาจารย์ดู ผมแนบไฟล์มาด้วย
Attachments
data report realtimerev2.xlsx
FromToPartnumber
(28.65 KiB) Downloaded 9 times
Post Reply