VBA เป็นส่วนหนึ่งของชุด Microsoft Office เป็นเวลาหลายปี แม้ว่ามันจะไม่ได้มีฟังก์ชั่นการทำงานเต็มรูปแบบและประสิทธิภาพของแอปพลิเคชั่น VB เต็มรูปแบบ แต่ VBA ก็มอบความยืดหยุ่นให้กับผู้ใช้ Office ในการรวมผลิตภัณฑ์ Office และทำให้งานที่คุณทำอยู่เป็นอัตโนมัติ
หนึ่งในเครื่องมือที่ทรงพลังที่สุด ที่มีอยู่ใน VBA คือความสามารถในการโหลดข้อมูลทั้งหมดในตัวแปรเดียวที่เรียกว่าอาเรย์ ด้วยการโหลดข้อมูลด้วยวิธีนี้คุณสามารถจัดการหรือทำการคำนวณในช่วงของข้อมูลนั้นได้หลายวิธี
![](/images/2111/excel-vba.jpeg)
อาร์เรย์ VBA คืออะไร ในบทความนี้เราจะตอบคำถามนั้นและแสดงวิธีใช้ใน สคริปต์ VBA ของคุณเอง.
VBA Array คืออะไร
การใช้ VBA อาเรย์ใน Excel นั้นง่ายมาก แต่การเข้าใจแนวคิดของอาเรย์นั้นค่อนข้างซับซ้อนหากคุณไม่เคยใช้มาก่อน
คิดว่าอาเรย์นั้นเหมือนกล่องที่มีส่วนที่อยู่ข้างใน อาเรย์แบบหนึ่งมิติคือกล่องที่มีส่วนหนึ่งบรรทัด อาร์เรย์สองมิติคือกล่องที่มีส่วนสองบรรทัด
![](/images/2111/vba-array1.jpg.optimal.jpg)
คุณสามารถใส่ข้อมูลลงในแต่ละส่วนของ“ กล่อง” นี้ตามลำดับที่คุณต้องการ
In_content_1 ทั้งหมด: [300x250] / DFP: [640x360]->ที่จุดเริ่มต้นของสคริปต์ VBA ของคุณคุณต้องกำหนด "กล่อง" นี้โดยการกำหนดอาร์เรย์ VBA ของคุณ ดังนั้นในการสร้างอาร์เรย์ที่สามารถเก็บข้อมูลหนึ่งชุด (อาร์เรย์หนึ่งมิติ) คุณจะต้องเขียนบรรทัดต่อไปนี้
Dim arrMyArray(1 To 6) As String
ในภายหลังในโปรแกรมของคุณคุณสามารถวาง ข้อมูลในส่วนใด ๆ ของอาร์เรย์นี้โดยอ้างอิงส่วนที่อยู่ในวงเล็บ
arrMyArray(1) = "Ryan Dube"
คุณสามารถสร้างอาร์เรย์สองมิติโดยใช้บรรทัดต่อไปนี้
Dim arrMyArray(1 To 6,1 to 2) As Integer
ตัวเลขตัวแรกแสดงถึงแถวและตัวที่สองคือคอลัมน์ ดังนั้นอาร์เรย์ด้านบนสามารถเก็บช่วงที่มี 6 แถวและ 2 คอลัมน์
คุณสามารถโหลดองค์ประกอบของอาร์เรย์นี้ด้วยข้อมูลดังนี้
arrMyArray(1,2) = 3
สิ่งนี้จะโหลด 3 ลงในเซลล์ B1
อาร์เรย์สามารถเก็บข้อมูลประเภทใดก็ได้เป็นตัวแปรปกติเช่นสตริงบูลีนจำนวนเต็มลอยและอื่น ๆ
หมายเลขในวงเล็บยังสามารถเป็นตัวแปรได้ โปรแกรมเมอร์มักใช้ For Loop เพื่อนับส่วนทั้งหมดของอาร์เรย์และโหลดข้อมูลเซลล์ในสเปรดชีตลงในอาร์เรย์ คุณจะเห็นวิธีการทำสิ่งนี้ในภายหลังในบทความนี้
วิธีตั้งโปรแกรม VBA Array ใน Excel
ลองมาดูโปรแกรมง่ายๆที่คุณอาจต้องการโหลดข้อมูล จากสเปรดชีตไปยังอาร์เรย์หลายมิติ
ตัวอย่างเช่นลองดูที่สเปรดชีตการขายผลิตภัณฑ์ที่คุณต้องการดึงชื่อตัวแทนรายการและยอดขายทั้งหมดออกจากสเปรดชีต
![](/images/2111/excel-example.jpg.optimal.jpg)
โปรดทราบว่าใน VBA เมื่อคุณอ้างอิงแถวหรือคอลัมน์คุณจะนับ แถวและคอลัมน์ ที่เริ่มจากด้านบนซ้ายที่ 1 ดังนั้นคอลัมน์ตัวแทนคือ 3 คอลัมน์รายการคือ 4 และคอลัมน์ทั้งหมดคือ 7.
หากต้องการโหลดทั้งสามคอลัมน์ในแถวทั้ง 11 แถวคุณจะต้องเขียนสคริปต์ต่อไปนี้
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
คุณจะสังเกตเห็นว่าในการที่จะข้ามแถวส่วนหัวหมายเลขแถวในแรกเพื่อให้ดูต้องเริ่มต้นที่ 2 มากกว่า 1 ซึ่งหมายความว่าคุณต้องลบ 1 สำหรับค่าแถวแถวเมื่อคุณโหลด ค่าของเซลล์ลงในอาร์เรย์โดยใช้ Cells (i, j) .Value.
ตำแหน่งที่จะแทรก VBA Array Script ของคุณ
ในการวางโปรแกรมสคริปต์ VBA ใน Excel คุณต้องใช้ โปรแกรมแก้ไข VBA คุณสามารถเข้าถึงสิ่งนี้ได้โดยเลือกเมนู นักพัฒนาซอฟต์แวร์และเลือก ดูรหัสในส่วนการควบคุมของ Ribbon
![](/images/2111/excel-view-code.jpg.optimal.jpg)
หากคุณไม่เห็นนักพัฒนาในเมนูคุณจะต้อง เพิ่มมัน ในการทำสิ่งนี้ให้เลือก ไฟล์และ ตัวเลือกเพื่อเปิดหน้าต่างตัวเลือกของ Excel
![](/images/2111/adding-developer-menu.jpg.optimal.jpg)
เปลี่ยนคำสั่ง select จากดรอปดาวน์เป็น คำสั่งทั้งหมดเลือก นักพัฒนาซอฟต์แวร์จากเมนูด้านซ้ายและเลือกปุ่ม เพิ่มเพื่อย้ายไปยังบานหน้าต่างด้านขวา เลือกช่องทำเครื่องหมายเพื่อเปิดใช้งานและเลือก ตกลงเพื่อเสร็จสิ้น
เมื่อหน้าต่างตัวแก้ไขรหัสเปิดขึ้นตรวจสอบให้แน่ใจว่ามีการเลือกแผ่นข้อมูลของคุณในบานหน้าต่างด้านซ้าย เลือก แผ่นงานในรายการแบบเลื่อนลงด้านซ้ายและ เปิดใช้งานทางด้านขวา สิ่งนี้จะสร้างรูทีนย่อยใหม่ชื่อว่า Worksheet_Activate ()
ฟังก์ชันนี้จะทำงานทุกครั้งที่เปิดไฟล์สเปรดชีต วางรหัสลงในบานหน้าต่างสคริปต์ภายในรูทีนย่อยนี้
![](/images/2111/vba-script1.jpg.optimal.jpg)
สคริปต์นี้จะทำงานผ่าน 12 แถวและจะโหลดชื่อตัวแทนจากคอลัมน์ 3 รายการจากคอลัมน์ 4 และยอดขายรวมจากคอลัมน์ 7
![](/images/2111/vba-script2.jpg.optimal.jpg)
เมื่อทั้งสองลูปสำหรับลูปเสร็จสิ้นแล้วอาร์เรย์สองมิติ arrMyArray มีข้อมูลทั้งหมดที่คุณระบุจากแผ่นงานต้นฉบับ
การจัดการอาร์เรย์ใน Excel VBA
สมมติว่าคุณต้องการใช้ภาษีการขาย 5% กับราคาขายสุดท้ายทั้งหมด และจากนั้นเขียนข้อมูลทั้งหมดลงในแผ่นงานใหม่
คุณสามารถทำได้โดยเพิ่ม For for loop หลังแรกด้วยคำสั่งเพื่อเขียนผลลัพธ์ลงในแผ่นงานใหม่
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
สิ่งนี้จะ“ ยกเลิกการโหลด” อาร์เรย์ทั้งหมดลงใน Sheet2 ด้วยแถวเพิ่มเติมที่มีผลรวมคูณด้วย 5% สำหรับจำนวนภาษี
แผ่นงานที่ได้จะมีลักษณะเช่นนี้
![](/images/2111/script-results.jpg.optimal.jpg)
อย่างที่คุณเห็นอาร์เรย์ VBA ใน Excel มีประโยชน์อย่างยิ่งและมีความหลากหลายเช่นเดียวกับ เคล็ดลับ Excel อื่น ๆ
ตัวอย่างข้างต้นเป็นการใช้งานที่ง่ายมากสำหรับอาร์เรย์ คุณสามารถสร้างอาร์เรย์ที่ใหญ่กว่าและทำการเรียงลำดับเฉลี่ยหรือฟังก์ชั่นอื่น ๆ กับข้อมูลที่คุณเก็บไว้ในนั้น
หากคุณต้องการได้รับโฆษณาจริงคุณสามารถสร้างสองอาร์เรย์ มีช่วงของเซลล์ จากแผ่นงานสองแผ่นที่แตกต่างกันและทำการคำนวณระหว่างองค์ประกอบของแต่ละแถว
แอปพลิเคชันนั้นถูก จำกัด ด้วยจินตนาการของคุณเท่านั้น