: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

การแปลงข้อมูล

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#21

Post by Bafnet »

snasui wrote:ปกติ Procedure หนึ่ง ๆ เราจะเขียนเพื่องานใดงานหนึ่ง เพื่อลดความซับซ้อน ง่ายต่อการหาค่าผิดพลาดและทำการแก้ไขปรับปรุง หากต้องใช้พร้อมกันหลาย ๆ งานก็ค่อยเรียกใช้จาก Procedure อื่น ๆ ไม่ได้หมายความว่าเขียนหลาย Procedure แล้วจะต้องมีปุ่มสำหรับเรียกใช้ทุก Procedure ครับ
ติดใจครับ
ขั้นตอนคือ
1.Insert Procedure
2.ตั้งชื่อ
3.เลือกว่าเป็น Sub Function Property
4.เลือก Scope ว่า Public หรือ Private
จากนั้นเขียนคำสั่งที่ต้องการ ใช่ไหมครับ
แล้ววิธีเรียกใช้งานล่ะครับ
เขียนคำสั่งเรียกใช้อย่างไร :roll:
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#22

Post by snasui »

:D คำสั่งนี้ควรอยู่ท้าย ๆ ก่อน End Sub เลยครับ

Code: Select all

Application.ScreenUpdating = True
กรณีที่มีการ Select หรือ Activate เยอะ ๆ จะทำให้หน้าจอวูบวาบไปมา จึงต้องใช้คำสั่ง

Code: Select all

Application.ScreenUpdating = False
เพื่อป้องกันหน้าจอวูบวาบ ซึ่งจะทำให้ Code ทำงานช้าลงมาก และเมื่อทำงานเรียบร้อยแล้วค่อยเขียนคำสั่ง

Code: Select all

Application.ScreenUpdating = True
ส่วนการเรียกใช้ Code จาก Procedure อื่น ๆ ดู 8 บรรทัดแรกของ Link ด้านล่างนี้ได้เลยครับ จะประกอบด้วย Code ที่เขียนเรียกใช้ Procedure อื่น ๆ อย่างเดียวไม่มีคำสั่งอื่นปนเลย นั่นคือเขียน Sub Procedure แล้วก็ตามด้วยชื่อ Procedure ที่ต้องการใช้งานและปิดด้วย End Sub :lol:

viewtopic.php?p=8704#p8704
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#23

Post by Bafnet »

snasui wrote:ดู 8 บรรทัดแรกของ Link ด้านล่างนี้ได้เลยครับ
สวัสดีครับอาจารย์ ตามไปดูมาแล้วครับ ไม่ทราบว่าแปดบรรทัดตรงไหนครับ
ผมอ่านตั้งแต่เริ่มต้นถึงหน้าสุดท้าย
ไม่เห็นประเด็นที่ต้องการครับ

อาจารย์ครับ มีเรื่องขอร้องหน่อยนะครับ :lol:

ผมต้องการให้ผู้ใช้เลือก combobox รายชื่อเอกสารซึ่งเป็น Word
แล้วสั่งพิมพ์เอกสารดังกล่าวครับ ตำแหน่งเอกสารคงที่ครับแค่ชื่อเอกสาร

Code: Select all

Private Sub CommandButton1_Click()
Dim wx As Variant
'On Error Resume Next
Application.ScreenUpdating = False
Set wx = Workbooks.Open("C:\Program Files\DumP\DATA\doc\" & ComboBox1 & ".doc", True, True)
wx.PrintOut
wx.Close False
Application.ScreenUpdating = True
'If Err > 0 Then
'MsgBox "Notfound Doc"
'End If
End Sub
อันนี้ผิดครับ แต่กลัวอาจารย์ว่าไม่ทำก่อน ผมคิดว่าผิดตรงคำว่า Workbooks.Open
เพราะ Workbooks.Open น่าจะหมายถึงไฟล์ Excel
รบกวนด้วยนะครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#24

Post by Bafnet »

ผมได้ลองบันทึกมาโครแล้วครับ
อิอิได้ผลเป็นไม่มีอะไรเลยครับ :tt:
ช่วยด้วยนะครับ
ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#25

Post by snasui »

Bafnet wrote:snasui เขียน:
ดู 8 บรรทัดแรกของ Link ด้านล่างนี้ได้เลยครับ

สวัสดีครับอาจารย์ ตามไปดูมาแล้วครับ ไม่ทราบว่าแปดบรรทัดตรงไหนครับ
ผมอ่านตั้งแต่เริ่มต้นถึงหน้าสุดท้าย
ไม่เห็นประเด็นที่ต้องการครับ
คลิก Link ที่ผมให้ไป รอจนโหลดเสร็จแล้วจับหน้าจอมาให้ดูหน่อยครับ อยากทราบเหมือนกันว่าที่บอกว่าไม่เห็นนั้นมันกลายเป็นหน้าไหน และจะเป็นหน้านั้นไปได้อย่างไร :?:
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#26

Post by Bafnet »

สวัสดีครับ
ภาพแรก ที่ปรากฎ
untitled.jpg
เมื่อเลื่อนไปดูที่หัวข้อ
aa.JPG
หวังว่าอาจารย์คงไม่โกรธ ผมไปตามลิงค์จริงๆครับ
snasui wrote:viewtopic.php?p=8704#p8704
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#27

Post by snasui »

:ard: ที่ผมล้อมกรอบสี่เหลี่ยมไว้นั้นคือการเรียกใช้ Procedure อื่นครับ
CallOterCode.png
เป็นการเปิดด้วย Sub Procedure แล้วก็ตามด้วยชื่อของ Procedure ที่ต้องการเรียกใช้จากนั้นปิดด้วย End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#28

Post by snasui »

:D ตัวอย่างการเปิด Word, Print และ Close ตามด้านล่างครับ

Code: Select all

Sub OpenWordPrintAndClose()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("D:\Test.docx")
wdApp.PrintOut
wdApp.Quit
Set wdApp = Nothing
End Sub
Note: ก่อนจะเรียกใช้ Word ให้เข้าเมนู Tools > Reference > เลือก Microsoft Word ด้วยครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#29

Post by Bafnet »

ขอบคุณครับอาจารย์
ต้องขออภัยในความไม่รู้ของผมครับ
กลัวอาจารย์โกรธครับ :flw:
ถ้ายังไม่โกรธถามต่ออีกสักนิดนะครับ
งานใกล้เสร็จแล้วครับ
1.งานตกแต่ง ผมสั่งซ่อนชีททั้งหมดเหลือไว้แผ่นเดียว ไม่แสดงเส้นตารางดูว่างเปล่า
แต่อยากให้พื้นเซลของชีทนั้น มีลักษณะโปร่ง ทำได้ไหมครับ แต่เครื่องมืออื่นยังอยู่นะครับ

2. ฟังก์ชั่นสุดท้ายที่อยากให้โปรแกรมมี ขอให้ช่วยแนะนำหน่อยครับ มีปุ่มคำสั่งบนUserForm คลิ๊กแล้วเปิด URL ของเว็บที่กำหนดไว้ ให้LinK ไปที่เว็บนั้น
http://lotusnotes02/handbook/main.nsf

อาจารย์ช่วยหน่อยนะครับ
:roll:
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#30

Post by Bafnet »

สวัสดีอีกครั้งครับ
ขอบคุณครับ ได้ผลครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#31

Post by Bafnet »

มาอีกแล้วครับ :shock:
ที่บอกว่าหน้าตาประมาณนี้ล่ะครับ ผมเคยเห็นน่ะครับ
untitled.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#32

Post by snasui »

Bafnet wrote:ขอบคุณครับอาจารย์
ต้องขออภัยในความไม่รู้ของผมครับ
กลัวอาจารย์โกรธครับ
:P ไม่ต้องกังวลครับ ไม่มีเหตุผลใดที่ต้องโกรธครับ ผมแค่อยากทราบว่า Link มันทำงานถูกต้องหรือเปล่า เกรงว่าจะเป็นปัญหาที่ Forum น่ะครับ แต่เมื่อพบว่าปกติดีก็โล่งใจครับ
Bafnet wrote:1.งานตกแต่ง ผมสั่งซ่อนชีททั้งหมดเหลือไว้แผ่นเดียว ไม่แสดงเส้นตารางดูว่างเปล่า
แต่อยากให้พื้นเซลของชีทนั้น มีลักษณะโปร่ง ทำได้ไหมครับ แต่เครื่องมืออื่นยังอยู่นะครับ
ลองใช้การ Minimize ดูครับ

Code: Select all

ActiveWindow.WindowState = xlMinimized
Bafnet wrote: 2. ฟังก์ชั่นสุดท้ายที่อยากให้โปรแกรมมี ขอให้ช่วยแนะนำหน่อยครับ มีปุ่มคำสั่งบนUserForm คลิ๊กแล้วเปิด URL ของเว็บที่กำหนดไว้ ให้LinK ไปที่เว็บนั้น
http://lotusnotes02/handbook/main.nsf
ลองใช้คำสั่งด้านล่างครับ

Code: Select all

Application.ThisWorkbook.FollowHyperlink "http://lotusnotes02/handbook/main.nsf"
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#33

Post by Bafnet »

สวัสดีครับอาจารย์
ตามที่อาจารย์ช่วยแปลงข้อมูล ขออนุญาตให้อาจารย์ช่วยปรับหน่อยนะครับ
หลังจากที่แปลงข้อมูลแล้วนะครับพบว่า มีข้อมูลทั้งสิ้น 17,785 รายการ (จากลูกค้า1763 ราย)
เป็นรายการที่ มี 0 ที่ต้องลบ 10,249 รายการ
มันเลยนานมากครับ จนผมว่าผู้ใช้ต้องคิดว่าระบบError
ผมเลยต้องการแสดง % ความคืบหน้าบนUserForm
แต่ผมใช้ Progressbar ที่เคยถามอาจารย์ไม่เป็น แต่วิธีที่ผมใช้และได้ผลพึงพอใจในระดับหนึ่ง
ลักษณะนี้ครับ

Code: Select all

Sheets("FileC").Activate
r = 2
Do Until Sheet10.Cells(r, 1).Value = ""
If Sheet10.Cells(r, 4).Value = 0 And Sheet10.Cells(r,2) And Sheet10.Cells(r,3) Then
......'คำสั่งที่ลบแถวCells(r, 4)ทั้งแถว
r = r + 1
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ที่ตำแหน่งนี้มีการคำนวณเปอร์เซ็น
DoEvents
Loop
ผมลองนำไปใส่ในของอาจารย์ก็ไม่ได้ มัน DoEvents ไม่ได้
ครั้นใส่

Code: Select all

frmlone.TextBox1.Value = Sheet9.Range("AB1").Value

Code: Select all

frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ที่ตำแหน่งนี้มีการคำนวณเปอร์เซ็น
DoEvents
Sub DelZero()

Code: Select all

Dim rAll As Range
Dim r As Range
With Worksheets("Sheet2")
    Set rAll = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
End With
For Each r In rAll
    If r = 0 And r.Offset(0, 1) = 0 And r.Offset(0, 2) = 0 Then
        r = ""
    End If
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ลองเพิ่มเข้าไป
Next r
    On Error Resume Next
    rAll.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
frmlone.TextBox1 มันก็แสดงผลเปอร์เซ็นตอนจบทีเดียว รบกวนปรับคำสั่งด้นบนให้ลบแถวที่ (r,4) หน่อยนะครับ
ขอบคุณครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#34

Post by Bafnet »

สวัสดีครับอาจารย์ อาจารย์คงหลับแล้ว
ผมนั่งลองผิดลองถูกจนได้แบบนี้ครับ

Code: Select all

Sub Sed()
Dim r As Integer
Sheets("Sheet2").Activate
 r = 2
Do Until Sheet2.Cells(r, 1).Value = ""
If Sheet2.Cells(r, 5).Value = 0 Then
Sheet2.Rows(r).Select
Selection.Delete Shift:=xlUp
End If
r = r + 1
UserForm1.TextBox1.Value = Sheet2.Range("AB1").Value 
DoEvents
Loop
End Sub
ผมดีใจที่อย่างน้อยมันก็เริ่มลบแล้ว
แต่ทำไมมันลบไม่หมด ในคราวเดียว ลบครั้งแรกจาก 10,249 เหลือ 4,000 รบกวนดูให้หน่อยนะครับ
ที่ผมทราบจำนวนก็จาก AB1 = COUNTIF(E:E,0)
ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#35

Post by snasui »

:D ปกติการ Loop เพื่อลบบรรทัดเราจะลบจากล่างขึ้นบนครับ ถ้าลบคอลัมน์ก็ควรจะทำจากขวามาซ้าย ไม่เช่นนั้นก็จะเกิดปัญหาอย่างที่พบคือเกิด Error หรือลบไม่หมด

ผมปรับ Code มาให้แล้วตามด้านล่างลองทดสอบใช้งานดูครับ

Code: Select all

Sub Sed()
Dim r As Integer
With Worksheets("Sheet2")
    .Activate
    r = .Range("A1").End(xlDown).Row
    Do Until r = 1
        If .Cells(r, 5).Value = 0 Then
            .Cells(r, 5).EntireRow.Delete
        End If
        r = r - 1
        UserForm1.TextBox1.Value = .Range("AB1").Value
        DoEvents
    Loop
End With
End Sub
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#36

Post by Bafnet »

สวัสดีครับ
ขอบคุณมากครับ
จะพยายามต่อไปครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#37

Post by Bafnet »

สวัสดีครับ
ถามต่ออีกสักนิดหนึ่ง
อย่างที่เรียนอาจารย์ว่าจำนวนข้อมูลมีจำนวนที่ไม่แน่นอน
เวลาผมกำหนดช่วงข้อมูลที่ไม่ทราบจำนวนที่แน่ชัด
ต้องกำนดเช่น Sheet2.Rang("A:AA") ซึ่งมันทำให้ช้า
มีความคิดในลักษณะนี้ได้ไหมครับ
1.พอเรานำเข้าข้อมูลมา ก็กำหนดสักที่หนึ่งเช่น AC1ให้
=COUNTA(A:A)-1 'ลบหัวแถว ซึ่งทำให้เราทราบจำนวนข้อมูล

Code: Select all

Sub a
Dim r As interger
Dim n As interger
 With Worksheets("Sheet2")
    .Activate
    r = 2
    n = Sheet2.Range("AC1").value 
      Do Until Sheet10.Cells(r, 1).Value = ""
Sheet10.Cells(r, 6).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
Sheet10.Cells(r, 7).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6).Address & ",FileA!A1:G(n),5,0)" 
Sheet10.Cells(r, 8).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6) & ",FileA!A1:G(n),7,0)" 
Sheet10.Cells(r, 9).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 1) & ",FileB!A1:T(n),17,0)"
Sheet10.Cells(r, 23).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6) & ",FileA1!A1:G(n),3,0)"
TextBox7.Value = Sheet10.Range("P1").Value
DoEvents
r = r + 1
LoopEnd With
End Sub

Code: Select all

"=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
มีลักษณะวิธีใช้อย่างนี้ไหมครับ
ถ้ามีแนะนำหน่อยนะครับ ระบบจะได้เร็วขึ้นสักนิด :lol:
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#38

Post by snasui »

Bafnet wrote:"=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
จาก Statement ด้านบน (n) จะทำงานไม่ได้ เนื่องจากไม่ถือว่าเป็นตัวแปร แต่กลายเป็นส่วนหนึ่งของ String ,FileB!A1:T(n),3,0)

หากต้องการใช้ให้เป็นตัวแปรน่าจะเป็นตามด้านล่างครับ

"=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T" & n & ",3,0)"

ลองปรับใช้ดูครับ
Bafnet
Member
Member
Posts: 167
Joined: Thu Jun 09, 2011 11:52 pm

Re: การแปลงข้อมูล

#39

Post by Bafnet »

สวัสดีครับอาจารย์
วันนี้เป็นอะไรที่ไม่คืบหน้าเลยครับ
การแปลงข้อมูลช้าครับ ช้าตอนที่ลบ
เป็นเรื่องแปลกใจครับ
เมื่อคืนตอนผมทดลอง ผมทำในไฟล์ใหม่ โดยใช้ชุดข้อมูลของจริง
เห็นบรรทัดที่มันวิ่งลบ เร็วจนน่าตื่นเต้น
แป๊ปเดียวก็เสร็จ
แต่พอมาใช้จริงในไฟล์งานจริงกลับช้า
ขนาดไฟล์โดยรวม หรือจำนวน Toolbox ที่อยู่บน UserForm มีผลหรือเปล่าครับ

นี่นั่งรอมันลบมาจนอาบน้ำเสร็จ มันยังลบไม่เสร็จเลย
คอมผมที่ใช้ทำงานชิ้นนี้ก็แรงอยู่นะ
:lol:

ถามต่อพลาง เรื่องเดิมล่ะครับ
จากข้อมูล อาจารย์จะเห็น ปี เดือน ไม่มีวัน
55 6
เรื่องรวมเลขให้เป็นวันที่พอทำได้
แต่จะทำยังไงครับให้เป็นวันที่สิ้นเดือนของเดือนนั้น เช่น A1=55 B1 = 55
55 6 ผมกะใส่ = (1 & "/"& B1 & "/" & A1)*1
1/6/55 ทำอย่างไรให้เป็นวันที่สิ้นเดือนครับ
อาจารย์ครับ นี่ขนาดตั้งกระทู้จะเสร็จ มันพึ่งวิ่งไปถึงบรรทัด 8000 กว่าเอง มีตั้ง17000 กว่าบรรทัด :roll:
ขอบคุณครับ ซักผ้าคงทัน :lol:
User avatar
snasui
Site Admin
Site Admin
Posts: 30938
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การแปลงข้อมูล

#40

Post by snasui »

Bafnet wrote:สวัสดีครับอาจารย์
วันนี้เป็นอะไรที่ไม่คืบหน้าเลยครับ
การแปลงข้อมูลช้าครับ ช้าตอนที่ลบ
เป็นเรื่องแปลกใจครั
หากว่าในไฟล์มีฟังก์ชั่น Vlookup หรือพวก Volatile Function จำนวนมาก การลบบรรทัดย่อมช้าแน่นอนครับ เพราะจะเกิดการคำนวณทุก ๆ ครั้งที่มีการลบ

ลองเพิ่ม Code นี้ลงไปก่อนที่จะเป็น Code ลบบรรทัดครับ

Code: Select all

Application.Calculation = xlCalculationManual
เมื่อลบเรียบร้อยแล้วใช้ Code นี้เข้าไปปรับการคำนวณให้เป็น Automatic เหมือนเดิม

Code: Select all

Application.Calculation = xlCalculationAutomatic
Bafnet wrote:ขนาดไฟล์โดยรวม หรือจำนวน Toolbox ที่อยู่บน UserForm มีผลหรือเปล่าครับ
คิดว่าไม่มีผลครับ
Bafnet wrote:จะทำยังไงครับให้เป็นวันที่สิ้นเดือนของเดือนนั้น เช่น A1 = 55, B1 = 6
การแปลงโดยใช้สูตรสามารถทำดังนี้ครับ

=Date(Year,Month+1,0)

แทนค่าตัวแปร

=Date(A1,B1+1,0)

แต่ A1 ต้องเป็น 2012 ไม่ใช่ 55 ซึ่งแทน 2555 เนื่องจาก Excel ไม่รู้จักวันเดือนปีแบบ พ.ศ. ครับ
Post Reply