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
:D เพื่อให้ง่ายควรนำข้อมูลใน 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
:D ดูตัวอย่างการนำข้อมูลมาต่อกันในชีทเดียวที่นี่ครับ 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
:D ที่จริงมีถึง 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
:D ไฟล์ตัวอย่างไม่ควรมีขนาดใหญ่ครับ ชีทละ 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
:D ไฟล์ที่ทำมานั้นให้นำสูตรที่ผมได้ตอบไปแล้วมาใช้ครับ ติดขัดตรงไหนจะได้ดูต่อไปจากนั้นครับ

สำหรับคำถามต่อเนื่องให้ถามในกระทู้เดิม การเปิดกระทู้ใหม่ควรเป็นเรื่องใหม่ที่ไม่เกี่ยวกับเรื่องเดิม สำหรับกระทู้นี้ผมนำมารวมกันให้แล้วครับ

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
:D ช่วยแสดงคำตอบที่ต้องการมาด้วยและอธิบายว่าค่าที่นำมาวางนั้นมาด้วยเงือนไขใด จะได้เข้าใจตรงกันครับ

Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป

Posted: Sun Dec 01, 2013 7:57 am
by hutthaya
ให้ดึงมาแสดงประมาณนี้ค่ะอาจาร์ยตามไฟล์ที่แนบไปนะค่ะ

Re: ตารางสามารถเลื่อนเพิ่มเองได้เมื่อมีการเพิ่มข้อมูลเข้าไป

Posted: Sun Dec 01, 2013 10:49 am
by snasui
:D รู้สึกว่าจะวนกลับไปที่เดิมนะครับ ช่วยทบทวนใหม่ว่าผมแจ้งให้ทำอะไรไปถึงไหน และได้ทำมาเช่นนั้นครบถ้วนแล้วหรือไม่ ต้องทำมาก่อนทั้งหมดเพื่อจะได้ตอบต่อไปจากนั้น แต่หากว่าต้องการวิธีอื่นเช่นเขียน VBA จำเป็นจะต้องเขียนมาเองก่อนตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

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
:D ดูต้วอย่าง 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
:D การระบายสีใช้ VBA เข้ามาช่วย โดยสามารถใช้ Code ที่ได้จากการบันทึก Macro มาดัดแปลงได้

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