Page 1 of 1
ดึงข้อมูลจากฐานข้อมูลมาแสดงอีกชีท
Posted: Thu Jan 18, 2018 3:07 pm
by imindytaew
ต้องการดึงข้อมูล จากชีท Database โดยการ พิมพ์ข้อมูล ใน ชีท Report เซลล์ E2 เป็น Vessel No. (เลข 9 หลัก)
แล้วให้ดึงข้อมูลของ ชีท Database ที่มีค่าเป็น Vessel No.
ข้อมูลที่แสดงจะแสดงตามคอลัมภ์ โดยยึดจากหัวเซลล์
ุ้
ถ้า ชีท Report E2 ใส่ข้อมูล เป็น Vessel No. (เลข 9 หลัก) ให้ยึดข้อมูลนี้เป็นหลัก แล้วนำข้อมูลอื่นที่มี ค่าใน E2 มาแสดง
และ เปลี่ยนจาก ชีท Report E2 ใส่ข้อมูล เป็น Vessel Name (ภาษาไทย) ให้ยึดข้อมูลนี้เป็นหลัก แล้วนำข้อมูลอื่นที่มี ค่าใน E2 มาแสดง เป็นต้น
อ้างอิงรูปแบบการเเสดงผลจากเว็บนี้
http://snasui.blogspot.com/2011/06/vba_26.html
ต้องการรูปแบบ ในเว็บนี้เลยค่ะ พอทำตามแล้ว ไม่ได้
ทั้งนี้ ไม่มีพื้นฐาน ด้าน VBA เลยค่ะ ได้แต่ทำตามเว็บนี้ แล้วลองหาข้อมูลอื่นมาประกอบ แต่ยังทำไม่ได้ค่ะ
รบกวนด้วยค่ะ
Re: ดึงข้อมูลจากฐานข้อมูลมาแสดงอีกชีท
Posted: Thu Jan 18, 2018 3:43 pm
by logic
การใช้ VBA ต้องเขียนมาเองตามกฏของบอร์ดข้อ 5 ด้านบนครับ
ลองแบบสูตรครับ
A4 =IFERROR(INDEX(Database!A$3:A$1000,SMALL(IF($E$2=Database!$C$3:$C$1000,ROW(Database!$A$3:$A$1000)-ROW(Database!$A$3)+1),ROWS(A$4:A4))),"") กดแป้น Ctrl+Shift+Enter แล้วคัดลอกสูตรไปทางขวาถึง D4 แล้วคัดลอกลงด้านล่าง
E4 =IFERROR(INDEX(Database!AD$3:AD$1000,SMALL(IF($E$2=Database!$C$3:$C$1000,ROW(Database!$A$3:$A$1000)-ROW(Database!$A$3)+1),ROWS(E$4:E4))),"") กดแป้น Ctrl+Shift+Enter แล้วคัดลอกสูตรไปทางขวาถึง F4 แล้วคัดลอกลงด้านล่าง
Re: ดึงข้อมูลจากฐานข้อมูลมาแสดงอีกชีท
Posted: Fri Jan 19, 2018 9:46 am
by imindytaew
ในชีท Report
Code: Select all
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$2" And Target <> "" Then
ShowEmp
ElseIf Target.Address = "$E$2" And Target = "" Then
MsgBox "Please select data."
End If
End Sub
ใน Module
Code: Select all
Option Explicit
Option Base 1
Sub ShowEmp()
Dim a() As Variant, lng As Long
Dim r As Range, rAll As Range
Dim rt As Range, rl As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
rl = Rows.Count
With Worksheets("Database")
Set rAll = .Range("C3", .Range("C" & rl).End(xlUp))
End With
For Each r In rAll
If r = Worksheets("Report").Range("E2") Then
lng = lng + 1
ReDim Preserve a(5, lng)
a(1, lng) = lng
a(2, lng) = r.Offset(0, -5)
a(3, lng) = r.Offset(0, -4)
a(4, lng) = r.Offset(0, -3)
a(5, lng) = r.Offset(0, -2)
End If
Next r
If lng > 0 Then
With Worksheets("Report")
Set rt = .Range("A5", .Range("E" & lng - 1 + 5))
.Range("A5", .Range("A" & rl).End(xlUp).Offset(0, 4)).ClearContents
.Range("A5:E5").Copy
rt.PasteSpecial xlPasteFormats
rt = Application.Transpose(a)
.Range("B5", .Range("B" & rl).End(xlUp)).NumberFormat = "000000"
.Range(.Range("A4").End(xlDown).Offset(1, 0), .Range("E" & rl)).Clear
.Range("E2").Activate
End With
Else
MsgBox "Data not found."
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
โค้ดนี้อ้างอิงจาก บล็อกของ
http://snasui.blogspot.com/2011/06/vba_26.html ค่ะ
ซึ่งตัวดิฉันเอง ยังไม่มีความรู้ความเข้าใจ เกี่ยวกับความหมายของตัวแปรใน โค้ดนี้ค่ะ ลองเปลี่ยนเซลล์ที่อ้างอิงดู รัน แล้ว Error ค่ะ
รบกวนด้วยค่ะ ขอบคุณค่ะ
Re: ดึงข้อมูลจากฐานข้อมูลมาแสดงอีกชีท
Posted: Fri Jan 19, 2018 11:06 am
by logic
แนบไฟล์ที่เขียนเองแล้วมาด้วย เพื่อน ๆ จะได้ช่วยกันดูให้ใด้ครับ
