Page 1 of 2
ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 10:15 am
by hutthaya
ข้อมูลใน sheet2 และ sheet3 จะนำมาเพิ่มโดยมีเงื่อนไขคือ ถ้าชื่อ product + capacity ถ้าข้อมูลทั้งสองคอลั่มตรงกันจะนำมาเพิ่มลงใน sheet1 ในส่วนของ คอลั่ม A ละ B เรียงลงไปตั้งแต่บรรทัดที่ 5 แต่ถ้าชื่อ product ซ้ำกัน แต่ capacity ต่างกันก้อให้แสดงค่าของเซลนั้นออกมาที่ sheet1 ยากทราบเกี่ยวกับการจะเพิ่มแถวข้อมูลโดยอัตโนมัติค่ะ ดิฉันไม่ค่อยทราบเกี่ยวกับการเขียน VBA หรือการใช้ macro เลย
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 11:34 am
by snasui

เพื่อให้ง่ายควรนำข้อมูลใน Sheet2 และ Sheet3 มาต่อกันก่อน ไม่ทราบว่าหากทำเช่นนี้ติดปัญหาใดหรือไม่ครับ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 1:27 pm
by hutthaya
ต่อกันไม่ได้ค่ะเพราะต้องนำข้อมูลในส่วนของ sheet1 และ sheet2 มาทำการเปรียบเทียบกันค่ะ หรืออาจาร์ยพอจะมีข้อชี้แนะแบบไหนอีกไหมค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 1:37 pm
by hutthaya
เรียงต่อกันได้ค่ะอาจาร์ย แต่ปัญหาจะติดตรงที่ข้อมูลที่รับเข้ามาแต่ละครั้งมันจะไม่เท่าเดิมตลอดค่ะเลยไม่ทราบวิธีที่จะนำมาต่อกันยังไงค่ะ เพราะว่า sheet1 และ sheet2 จะไม่มีข้อมูลที่เหมือนเดิมตลอดค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 2:39 pm
by snasui

ดูตัวอย่างการนำข้อมูลมาต่อกันในชีทเดียวที่นี่ครับ
http://snasui.blogspot.com/2009/12/sheet-sheet.html
หลังจากต่อกันได้แล้วช่วยแนบไฟล์นั้นมาอีกครั้งจะได้ช่วยเขียนสูตรเพื่อเลือกข้อมูลมาแสดงตามต้องการครับ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 3:52 pm
by hutthaya
คือมันติดตรงทำไมสูตรนับค่าใน dataprocap1 เป็น 31 บรรทัดค่ะ ทั้งที่จริงแล้วมี 19 บรรทัด ค่าตรงนั้นเลยว่างเลย 0 ช่วยแนะนำทีนะค่ะอาจาร์ย
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 4:46 pm
by snasui

ที่จริงมีถึง 31 บรรทัดถูกต้องแล้วครับ ข้อมูลยังอยู่ด้านล่างประมาณบรรทัดที่เจ็ดพันกว่าอีกชุดหนึ่งครับ
ดูวิธีการนำข้อมูลที่ซ้ำกันมาเรียงกันโดยใช้ฟังก์ชั่น Countifs, Lookup เป็นหลัก ตามไฟล์แนบครับ โดยทำตามลำดับดังนี้
คอลัมน์ C, D, M, K, L
ลองประยุกต์ใช้กับไฟล์แรกทีแนบมาดู ติดตรงไหนนำมาถามกันต่อครับ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 7:56 pm
by hutthaya
อาจาร์ยค่ะแล้วจะลองบันทึกเป็นแบบ macro แต่เรียกใช้งานไม่ได้เลยค่ะพอรันออกมาค่าทุกอย่างเป็น 0 หมด จริงๆแล้วอยากแนบไฟล์ของทุกชีทส่งให้อาจาร์ยดูเลยค่ะ แต่แนบในนี้ไม่ได้เพราะไฟล์มันเกินขนาด
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Tue Nov 26, 2013 10:09 pm
by snasui

ไฟล์ตัวอย่างไม่ควรมีขนาดใหญ่ครับ ชีทละ 4-5 บรรทัดก็น่าจะได้หลายสิบชีทกว่าจะมีขนาดเกิน 300kb ซึ่งเกินกว่าที่จะแนบได้
การ compare ข้อมูลจาก sheet ข้อมูลที่เรียงต่อกันแล้ว
Posted: Wed Nov 27, 2013 9:35 am
by hutthaya
จากไฟล์ที่แนบไปนะค่ะคือตอนนี้หนูต่อข้อมูลจาก dataprocap1 กับ dataprocap2 นำข้อมูลมาต่อกันได้แล้ว ตอนนี้จะนำข้อมูลจาก sheet sort ไป วางไว้ที่ sheet MPS TEMPLATE ในตำแหน่งของ a4 และ b4 โดยที่ข้อมูลจะทำการเปรียบเทียบค่าของ product+ capacity ที่ต่างกันโดยข้อมูลนั้น จะนำลงมาไว้ที่ sheet mps template ค่ะ โดยข้อมูลจะไม่ซ้ำกันคืออยากให้ข้อมูลออกมาแบบตารางที่สองที่ใส่คู่กันไปค่ะอาจาร์ย
ช่วยแนะนำวิธีการทำด้วยนะค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Wed Nov 27, 2013 10:20 am
by snasui

ไฟล์ที่ทำมานั้นให้นำสูตรที่ผมได้ตอบไปแล้วมาใช้ครับ ติดขัดตรงไหนจะได้ดูต่อไปจากนั้นครับ
สำหรับคำถามต่อเนื่องให้ถามในกระทู้เดิม การเปิดกระทู้ใหม่ควรเป็นเรื่องใหม่ที่ไม่เกี่ยวกับเรื่องเดิม สำหรับกระทู้นี้ผมนำมารวมกันให้แล้วครับ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Fri Nov 29, 2013 11:10 am
by hutthaya
อาจาร์ยช่วยดูไฟล์ที่แนบที่นะค่ะคือปัญหาหนูคือจะทำยังไงให้นำชื่อแต่ละชื่อไปวางแบบ เช่น
VULCN_RE 1000 ไปวางไว้ที่หน้า sheet MPS template ในส่วนของคอลั่ม A กับ B แล้วให้คอยเชคว่ามีชื่v product และ capacity ชื่อนี้อยู่ในแถวอีกหรือไม่ ถ้าไม่มีให้นำเส้นสีน้ำเงินคือเส้น total กั่นไว้ แล้วทำต่อไปคอยเชคชื่อต่อไปและ capacity คือถ้าหมดชื่อ ถ้าชื่อโปรดัคต่อไปมีมากกว่า 1 ก้อให้เส้นสีฟ้าคั่นเมื่อจบค่าที่ไม่ซ้ำอีกค่ะ พอดีหนูมีความรู้น้อยมากเกี่ยวกับการเขียนมาโครหนูเป็นนักศึกษาฝึกงานใหม่ค่ะแล้วไม่รู้วิธีบันทึกมาโครยังไงให้สามารถเพิ่มแถวเองได้เมื่อเรานำข้อมูลส่งเข้ามาในชีท หนูยังมองการทำงานไม่ออกเลยค่ะ ช่วยแนะนำหน่อยน่ะค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Fri Nov 29, 2013 11:14 am
by snasui

ช่วยแสดงคำตอบที่ต้องการมาด้วยและอธิบายว่าค่าที่นำมาวางนั้นมาด้วยเงือนไขใด จะได้เข้าใจตรงกันครับ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Sun Dec 01, 2013 7:57 am
by hutthaya
ให้ดึงมาแสดงประมาณนี้ค่ะอาจาร์ยตามไฟล์ที่แนบไปนะค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Sun Dec 01, 2013 10:49 am
by snasui

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

Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Sun Dec 01, 2013 1:15 pm
by hutthaya
เขียนโค้ดดึงข้อมูลมาใส่ได้แล้วค่ะแต่ไม่รู้จะให้คั่นด้วยเส้นน้ำเงิน total ยังไงเมื่อจบชื่อ โปรดัคหนึ่งๆอะค่ะ
Code: Select all
Sub comparemps()
Dim i As Integer
Dim pro() As String
Dim cap() As String
Dim procap() As String
Dim no_c As Single
i = 1
no_c = 0
Do Until Worksheets("NEWDATA").Cells(i + 1, 1).Value & Worksheets("NEWDATA").Cells(i + 1, 2).Value = ""
i = i + 1
no_c = no_c + 1
Loop
ReDim pro(1 To no_c)
ReDim cap(1 To no_c)
i = 1
For i = 1 To no_c
pro(i) = Worksheets("NEWDATA").Cells(i + 1, 1).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 1).Value = pro(i)
cap(i) = Worksheets("NEWDATA").Cells(i + 1, 2).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 2).Value = cap(i)
Next i
End Sub
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Sun Dec 01, 2013 3:00 pm
by hutthaya
จะให้เส้นสีฟ้าคั่นเมื่อจบชื่อ product หนึ่งๆค่ะ นี้เป็น source code ใหม่ค่ะ อยากได้ฟอแมทตแบบแถวเลื่อนเองใส่เส้นคั่นได้เมื่อมีการอัพเดทข้อมูลค่ะอาจาร์ย
Code: Select all
Sub comparemps()
Dim i As Integer
Dim pro() As String
Dim cap() As String
Dim procap() As String
Dim no_c As Single
i = 1
no_c = 0
Do Until Worksheets("NEWDATA").Cells(i + 1, 1).Value & Worksheets("NEWDATA").Cells(i + 1, 2).Value = ""
i = i + 1
no_c = no_c + 1
Loop
ReDim pro(1 To no_c)
ReDim cap(1 To no_c)
i = 1
For i = 1 To no_c
pro(i) = Worksheets("NEWDATA").Cells(i + 1, 1).Value
cap(i) = Worksheets("NEWDATA").Cells(i + 1, 2).Value
If i = 1 Then
pro(i) = Worksheets("NEWDATA").Cells(i + 1, 1).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 1).Value = pro(i)
cap(i) = Worksheets("NEWDATA").Cells(i + 1, 2).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 2).Value = cap(i)
ElseIf pro(i) = pro(i - 1) Then
pro(i) = Worksheets("NEWDATA").Cells(i + 1, 1).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 1).Value = pro(i)
cap(i) = Worksheets("NEWDATA").Cells(i + 1, 2).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 2).Value = cap(i)
Else
pro(i) = Worksheets("NEWDATA").Cells(i + 1, 1).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 1).Value = pro(i)
cap(i) = Worksheets("NEWDATA").Cells(i + 1, 2).Value
Worksheets("MPS TEMPLATE").Cells(7 + i, 2).Value = cap(i)
End If
Next i
End Sub
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Sun Dec 01, 2013 9:31 pm
by snasui

ดูต้วอย่าง Code สำหรับการใส่ Subtotal, Grand Total ตามด้านล่างครับ
ส่วนการระบายสี Sub Total, Grand Total ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
Code: Select all
Dim grandTotal As Double
Sub Test()
Dim rAll As Range, r As Range
Dim colR As Collection, item As Variant
Dim subTotal As Double, target As Range
Dim iMax As Integer, iCount As Integer
Set colR = New Collection
With Sheets("NEWDATA")
Set rAll = .Range("a2", .Range("a" & Rows.Count).End(xlUp))
End With
On Error Resume Next
For Each r In rAll
colR.Add r, r
Next r
On Error GoTo 0
For Each item In colR
iMax = Application.CountIf(rAll, item)
iCount = 0
subTotal = 0
For Each r In rAll
If r <> "" Then
With Sheets("MPS TEMPLATE")
Set target = .Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
End With
If r = item Then
target = r
target.Offset(0, 1) = r.Offset(0, 1)
subTotal = subTotal + r.Offset(0, 1)
iCount = iCount + 1
End If
If iCount = iMax Then
With Sheets("MPS TEMPLATE").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = "Sub Total"
.Offset(1, 1) = subTotal
End With
Exit For
End If
End If
Next r
GrandTotal = GrandTotal + subTotal
Next item
With Sheets("MPS TEMPLATE").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = "Grand Total"
.Offset(1, 1) = GrandTotal
End With
Set colR = Nothing
End Sub
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Mon Dec 02, 2013 11:26 am
by hutthaya
ขอบคุณมากมากค่ะอาจาร์ย การระบายสีกับการเพิ่มแถวอัตโนมัติใช้ macro ข้ามาช่วยได้ใช่ไหมค่ะ
Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป
Posted: Mon Dec 02, 2013 11:29 am
by snasui

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