Page 1 of 1

VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 9:14 am
by Supachok
เรียน ท่านผู้รู้

เราสามารถใช้สูตรที่รวมข้อความเป็น Range ได้หรือไม่ใน excel.
วิธีที่2 -3 เป็นการนับ cell
วิธีที่ 4 เป็นการใช้ define name กำหนด range. ไม่สามารถแสดงค่า
ลองมั่วเขียน VBA ดูผลสุดท้ายได้ code ตามข้างล่าง ใช้ 3 ตัวแปร.

1 /$C$1 =VBA
2 / $C$2 =A1&A2&A3
3 / $C$3 =CONCATENATE(A1,A2,A3)
4/ $C$4 =CONCATENATE(fff)

Code: Select all

Sub xx()

For x = 1 To Range("a" & Rows.Count).End(xlUp).Row
r = Cells(x, 1).Value
t = t & r
Next x
[C1].Value = t

End Sub

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 9:14 pm
by snasui
:D อ่านแล้วไม่เข้าใจครับ

กรุณาอธิบายมาใหม่พร้อมทั้งชี้ให้เห็นว่าต้องการคำตอบเป็นแบบใด มีหลักการคิดอย่างไรจึงได้ค่าเป็นเช่นนั้น

หากใช้ Code กรุณาแนบ Code นั้นมาในไฟล์ตัวอย่างด้วย ไฟล์ที่จะแนบ Code ได้ควรมีนามสกุลเป็น .xlsm เป็นอย่างน้อยครับ

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 9:29 pm
by Supachok
แนบไฟล์ใหม่ครับ xlsm.

เรียน ท่านอาจารย์

ที่ต้องการถามคือมี สูตรใดๆ ที่สามารถรวมค่าใดๆ จากแต่ละ Cells โดยใช้กำหนดสูตรจาก Range(a1:a3)
ตามตัวอย่างแนบคือรวม ค่าจาก A1,A2,A3 ไปยัง C1


รูปแบบสูตรที่พยายามใช้หา
1 /$C$1 =VBA
2 / $C$1 =A1&A2&A3
3 / $C$1 =CONCATENATE(A1,A2,A3)
4/ $C$1 =CONCATENATE(fff) = define name

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 9:34 pm
by snasui
:D เข้าใจว่าต้องการเขียนฟังก์ชั่นขึ้นมาใช้เอง

ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Function xx(allRng As range) As String
    Dim r As range, t As String
    For Each r In allRng
        t = t & r.Value
    Next r
    xx = t
End Function
จากนั้นที่เซลล์ใด ๆ คีย์สูตร

=xx(A1:A3)

Enter > สังเกตผลลัพธ์ที่ได้

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 9:41 pm
by Supachok
เรียน ท่านอาจารย์

ผมยังไม่สามารถเข้าใจการเขียน VBA ได้มากแบบนั้น
แต่ที่อาจารย์แนะนำมานั้นถูกต้องแล้ว

เพราะ formula ใน excel คงไม่มี function นี้
ขอบคุณมากครับ

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 10:19 pm
by Supachok
เรียน ท่านอาจารย์

VBA Subprocedure กด F8 step into
ใช้ในการตรวจ code

VBA function run หรือ มี step into หรือไหมครับ

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 10:33 pm
by snasui
:D คลิกในแถบที่ลูกศรชี้ตรงบรรทัดที่ต้องการจะเริ่ม Step Into จากนั้นไปคลิกในเซลล์ที่มีสูตรใน Worksheet > กดแป้น F2 แล้ว Enter จากนั้นค่อยกดแป้น F8 เพื่อ Run ไปทีละ Step ครับ

Re: VBA Concentrate / Merge (range)

Posted: Thu Feb 21, 2019 10:42 pm
by Supachok
:cp: :cp: :cp: ขอบคุณมากๆครับ