Page 1 of 1
vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Fri Jan 31, 2020 4:42 pm
by March201711
ต้องการ copy rate SGD ในแต่ละวันที่ column E มาใส่ที่ file : Daily_rate เป็นวันที่ตามเดือน
เช่น ดูที่ Row A1 : Foreign Exchange Rates as of 30 January 2020 เป็นวันที่ 30/01/2020 ให้เอาสกุล SGDที่ column E14 มาใส่ที่ file : Daily_rate ที่ Cell B32
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Fri Jan 31, 2020 11:09 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Dim dayOfMth As Variant, dataAll As Range
Dim rngCur As Range, r As Range
With Workbooks("Daily_rate.xlsx").Worksheets("AVG_SGD")
Set dataAll = .Range("b3:m33")
End With
With Workbooks("BOT_rate.xlsm").Worksheets("Rate_BOT")
dayOfMth = VBA.Split(VBA.Mid(.Range("a1"), VBA.InStr(.Range("a1"), "as of") + 6), " ")
Set rngCur = .Range("b:b").Find("SGD").Offset(0, 3)
End With
For Each r In dataAll
If r.Parent.Cells(r.Row, "a").Value = "Day " & dayOfMth(0) And _
Application.Text(r.Parent.Cells(2, r.Column), "[$- ]mmmm") = dayOfMth(1) Then
r.Value = rngCur.Value
Exit For
End If
Next r
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sat Feb 01, 2020 8:50 am
by March201711
ได้แล้วค่ะ
มีปัญหาอีกเรื่องนึงค่ะ เรื่องการ อัพเดทข้อมูลในวันถัดไปคือว่า ต้องการ copy บรรทัดก่อนหน้านั้นลงมาอีกบรรทัดนึงเพื่อเตรียมข้อมูลมารับรอง formula แต่บรรทัดก่อนหน้านั้นต้อง paste ข้อมูลเป็น value ก่อน ซึ่งข้อมูลวันก่อนนั้นสำคัญจำเป็นต้องเก็บไว้ค่ะ และข้อมูลมีเยอะมาก แต่ต้องเสียเวลามาปรับมืองเองตลอด เลยมีความจำเป็นต้องใช้ vba เข้าช่วย พอทำแล้วติดปัผญหาต้องมาปรับ line บรรทัดถัดไป ตรงrang มีวิธีให้ code รู้ไว้เองไหมคะ
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sat Feb 01, 2020 9:38 am
by snasui

งานแบบนี้เมื่อใช้ VBA แล้วก็ไม่จำเป็นต้องใช้สูตร ให้คัดลอกรายการที่ตรงวันมาวางได้เลยครับ
ให้คัดลอกข้อมูลของแต่ละวันมาวางให้ตรงกับบรรทัดของวันนั้น ๆ แทน ไม่ทราบติดปัญหาอะไรถึงพยายามใช้วิธีการตามที่อธิบายมาครับ

Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sat Feb 01, 2020 10:48 am
by March201711
ถ้าไม่ใช้formula ให้ vbaวางเป็น value เลย โดยให้ vba รู้เองว่าดึงตามวันที่ที่ cell A1 ที่ file source ค่ะแล้วถ้ามีsheet เดือน ถัดไปให้ vba รู้ได้เอง และวางข้อมูลในบรรทัดถัดไปค่ะ
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sat Feb 01, 2020 10:52 am
by snasui

ปรับจากที่ผมตอบใน #2 มาเองดูก่อน ติดแล้วค่อยถามกันต่อครับ
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sat Feb 01, 2020 1:58 pm
by March201711
ถ้า key วันที่ที่ทำงานที่ File : Source_data ที่ Cell A1 แล้วให้ vba ดึงข้อมูลไปวางที่ file : DailyWork ต่อจากบรรทัดก่อนหน้านี้
ถ้าเป็นเดือนถัดไปให้ vba ไปวางที่sheet ของเดือนนั้นๆ เช่น
ถ้า cell A1 เป็นวันที่ 1/2/20 ให้ vba ดึงข้อมูลที่ row A3:D3 ไปวางที่ file : DailyWork ที่ sheet : Feb
***พอ click run marco แล้ว vba ดึงข้อมูลมาวางที่ cell เดิม อยากให้ vba วางข้อมูลต่อจากบรรทัดก่อนหน้านั้นค่ะ
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sun Feb 02, 2020 6:23 am
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Dim strMth As String, d As Date
Dim rngSource As Range, rngTg As Range
With Workbooks("Source_data.xlsx").Worksheets("Data")
strMth = Application.Text(.Range("a1").Value, "mmm")
d = .Range("a1").Value
Set rngSource = .Range("a3:d3")
End With
With Workbooks("DailyWork.xlsm")
With .Worksheets(strMth)
Set rngTg = .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0)
rngTg.Value = d
rngTg.Offset(0, 1).Resize(1, 4).Value = rngSource.Value
End With
End With
Re: vba ดึงข้อมูลตามวันเดือนปี ทุกวัน
Posted: Sun Feb 02, 2020 6:45 pm
by March201711
ไดเแล้วค่ะ ขอบคุณมากค่ะ
