Page 1 of 1
counta ข้ามfile
Posted: Mon Jul 13, 2020 11:28 am
by sooksun2009
รบกวนอาจารย์ด้วยครับ ผมต้องการ countaข้อมูลข้าม file ผมใช้มา macro ทำได้แล้ว แต่ชื่อ fileที่countเปลี่ยนไปตามวันที่ ซึงต้องไปแก้ใน code ทุกวัน อยากให้เปลี่ยนชื่อfile ในcell b2กับC2 ได้เลย โดยที่เราไม่ต้องไปแก้ที่codeทุกวัน ขอบคุณครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1)"
End Sub
Re: counta ข้ามfile
Posted: Mon Jul 13, 2020 2:07 pm
by puriwutpokin
ปรับตรงนี้ครับ ครั้งหน้าใส่โค้ดมาในไฟล์ด้วยนะครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"=COUNTA(INDIRECT(""'""&$B$2&""[""&$C$2&""]""&$D$2&""'!A3:A100""))"
Re: counta ข้ามfile
Posted: Mon Jul 13, 2020 2:47 pm
by sooksun2009
puriwutpokin wrote: Mon Jul 13, 2020 2:07 pm
ปรับตรงนี้ครับ ครั้งหน้าใส่โค้ดมาในไฟล์ด้วยนะครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"=COUNTA(INDIRECT(""'""&$B$2&""[""&$C$2&""]""&$D$2&""'!A3:A100""))"
ต้องขอโทษด้วยครับพอดีแยก file โค๊ดเลยไม่ได้ตามมาด้วย
ลองใส่โค๊ดไปแล้วปรากฎว่าถ้าไม่เปิด file ปลายทาง มัน countได้ค่าแค่ 1 จากข้อมูลfile ปลายทางมันเป็น9
Re: counta ข้ามfile
Posted: Mon Jul 13, 2020 2:49 pm
by puriwutpokin
การอ้างอิงที่ ใช้ Indirect จะต้องเปิดไฟล์ต้นทางนั้นเสมอครับ ไม่เช่นนั้น ควรให้ผลนับนั้นเป็นเพียงค่าไม่ใช่สูตรครับ
Re: counta ข้ามfile
Posted: Mon Jul 13, 2020 2:55 pm
by sooksun2009
puriwutpokin wrote: Mon Jul 13, 2020 2:49 pm
การอ้างอิงที่ ใช้ Indirect จะต้องเปิดไฟล์ต้นทางนั้นเสมอครับ ไม่เช่นนั้น ควรให้ผลนับนั้นเป็นเพียงค่าไม่ใช่สูตรครับ
ขอบคุณครับ
Re: counta ข้ามfile
Posted: Wed Jul 22, 2020 9:58 am
by sooksun2009
สอบถามเพิ่มเติม เวลาไฟล์ปลายทางมีการเพิ่มข้อมูล ไฟล์ต้นทางชอบถามหาว่า "Update values:"ไฟล์ปลายทาง (ไฟล์ปลายทางมี เพิ่มข้อมูลตลอดเวลา)มีวิธีแก้ไหมครับ
Re: counta ข้ามfile
Posted: Wed Jul 22, 2020 11:00 am
by puriwutpokin
ถ้าเปิดไฟล์ทั้ง 2 แล้ว ถ้า มีการถามสามารถยกเลิกไม่ให้ถามได้ โดยใส่คำสั่ง
ที่ ThisWorkbook ใส่คำสั่ง
ตอนเปิดไฟล์
Code: Select all
Private Sub Workbook_Open()
Application.DisplayAlerts = False
'Other Code....
Application.DisplayAlerts = True
End Sub
หรือจะเลือกจาก POP UP ตามรูปครับเลือกไม่อัพเดตและไม่เตือน หรือ เลือกจะอัพเดตโดยไม่ต้องเตือน ก็ตามรูปครับ
Re: counta ข้ามfile
Posted: Wed Jul 22, 2020 2:19 pm
by sooksun2009
ขอบคุณครับ ต้องลองดูก่อน
Re: counta ข้ามfile
Posted: Sat Jul 25, 2020 9:57 am
by sooksun2009
puriwutpokin wrote: Wed Jul 22, 2020 11:00 am
ถ้าเปิดไฟล์ทั้ง 2 แล้ว ถ้า มีการถามสามารถยกเลิกไม่ให้ถามได้ โดยใส่คำสั่ง
ที่ ThisWorkbook ใส่คำสั่ง
ตอนเปิดไฟล์
Code: Select all
Private Sub Workbook_Open()
Application.DisplayAlerts = False
'Other Code....
Application.DisplayAlerts = True
End Sub
หรือจะเลือกจาก POP UP ตามรูปครับเลือกไม่อัพเดตและไม่เตือน หรือ เลือกจะอัพเดตโดยไม่ต้องเตือน ก็ตามรูปครับ
ได้แล้วครับ ขอบคุณครับ
สอบถามเพิ่มเติมครับ code ถ้าไฟล์ที่จะ counta ยังไม่ถูกสร้าง อยากให้แสดง sheet2.range("Q2") เป็น 0 ขอบคุณครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1)"
End Sub
Re: counta ข้ามfile
Posted: Sat Jul 25, 2020 10:44 am
by puriwutpokin
ใช้ตัวดัก Error ครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=IFERROR(COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1),0)"
End Sub
Re: counta ข้ามfile
Posted: Sat Jul 25, 2020 4:14 pm
by sooksun2009
puriwutpokin wrote: Sat Jul 25, 2020 10:44 am
ใช้ตัวดัก Error ครับ
Code: Select all
Sub Macro1()
'' Macro1 Macro
'
'
Sheet2.Range("Q2").Value = _
"=IFERROR(COUNTA('O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1:R100C1),0)"
End Sub
ขอบคุณครับ
Re: counta ข้ามfile
Posted: Fri Jul 31, 2020 3:44 pm
by sooksun2009
สอบถามเพิ่มเติมครับ ถ้าไม่ต้องการ Counta แต่อยากค่าจากเซลนั้นเลย เช่นอยากได้ค่า sheet Sav1 cell A3
Re: counta ข้ามfile
Posted: Fri Jul 31, 2020 6:32 pm
by snasui

Link มาตรง ๆ ก็จะได้แบบนี้ครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"='O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1"
Re: counta ข้ามfile
Posted: Mon Aug 17, 2020 11:52 am
by sooksun2009
snasui wrote: Fri Jul 31, 2020 6:32 pm

Link มาตรง ๆ ก็จะได้แบบนี้ครับ
Code: Select all
Sheet2.Range("Q2").Value = _
"='O:\PRODUCTION\PDDailyReport\BangPhli\B-Line\Process 4\7.JULY\[Time Record P4 Update 10-07-2020.xlsm]Save1'!R3C1"
ได้แล้ว ขอบคุณครับ แต่ที่นีติดปัญหาครับ คือเวลาวันเดือนปีเปลี่ยนต้องมาเปลี่ยนที่หน้าต่าง Code ผมอยากให้เปลี่ยนในcell ต้องทำไงครับ
Re: counta ข้ามfile
Posted: Mon Aug 17, 2020 1:05 pm
by logic
เขียน path ไว้ในเซลล์แล้วเอามาใช้ในโค้ดก็ได้ครับ
ลองเขียนมาให้เพื่อนสมาชิกช่วยกันดูได้เลย
มาเชียร์ให้ช่วยกันใส่รุ่นเอ็กเซลในโปรไฟล์ ดูใต้โพสต์อาจารย์ครับ

Re: counta ข้ามfile
Posted: Mon Aug 17, 2020 1:44 pm
by sooksun2009
logic wrote: Mon Aug 17, 2020 1:05 pm
เขียน path ไว้ในเซลล์แล้วเอามาใช้ในโค้ดก็ได้ครับ
ลองเขียนมาให้เพื่อนสมาชิกช่วยกันดูได้เลย
มาเชียร์ให้ช่วยกันใส่รุ่นเอ็กเซลในโปรไฟล์ ดูใต้โพสต์อาจารย์ครับ
มีตัวอย่างให้ดูไหมครับ
Re: counta ข้ามfile
Posted: Mon Aug 17, 2020 7:39 pm
by snasui

ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
กรุณาเพิ่ม Version ของ Excel ใน Profile ด้วย ดูตัวอย่างได้ที่นี่ครับ
viewtopic.php?f=6&p=103177#p103177
Re: counta ข้ามfile
Posted: Tue Aug 18, 2020 9:12 am
by sooksun2009
snasui wrote: Mon Aug 17, 2020 7:39 pm

ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
กรุณาเพิ่ม Version ของ Excel ใน Profile ด้วย ดูตัวอย่างได้ที่นี่ครับ
viewtopic.php?f=6&p=103177#p103177
แก้ไขแล้วครับ เวอร์ชั่น Excelcแล้วครับ ขอบคุณครับ
Re: counta ข้ามfile
Posted: Tue Aug 18, 2020 8:13 pm
by snasui
sooksun2009 wrote: Tue Aug 18, 2020 9:12 am
แก้ไขแล้วครับ เวอร์ชั่น Excelcแล้วครับ ขอบคุณครับ

ขอบคุณครับ
ส่วนคำตอบผมก็ได้ตอบไปแล้วเช่นกันดังข้อความที่ยกมานี้
snasui wrote: Mon Aug 17, 2020 7:39 pm
ตัวอย่างก็คล้ายกับที่เขียนมาแล้วครับ เพียงแต่แทนที่จะอ้างข้อความยาว ๆ ใน Code ก็ไปอ้างค่าในเซลล์แทนครับ
ลองปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ