VBA Array ใน Excel คืออะไรและวิธีการโปรแกรมหนึ่ง


VBA เป็นส่วนหนึ่งของชุด Microsoft Office เป็นเวลาหลายปี แม้ว่ามันจะไม่ได้มีฟังก์ชั่นการทำงานเต็มรูปแบบและประสิทธิภาพของแอปพลิเคชั่น VB เต็มรูปแบบ แต่ VBA ก็มอบความยืดหยุ่นให้กับผู้ใช้ Office ในการรวมผลิตภัณฑ์ Office และทำให้งานที่คุณทำอยู่เป็นอัตโนมัติ

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

อาร์เรย์ VBA คืออะไร ในบทความนี้เราจะตอบคำถามนั้นและแสดงวิธีใช้ใน สคริปต์ VBA ของคุณเอง.

VBA Array คืออะไร

การใช้ VBA อาเรย์ใน Excel นั้นง่ายมาก แต่การเข้าใจแนวคิดของอาเรย์นั้นค่อนข้างซับซ้อนหากคุณไม่เคยใช้มาก่อน

คิดว่าอาเรย์นั้นเหมือนกล่องที่มีส่วนที่อยู่ข้างใน อาเรย์แบบหนึ่งมิติคือกล่องที่มีส่วนหนึ่งบรรทัด อาร์เรย์สองมิติคือกล่องที่มีส่วนสองบรรทัด

<รูป class = "lazy aligncenter size-large">

คุณสามารถใส่ข้อมูลลงในแต่ละส่วนของ“ กล่อง” นี้ตามลำดับที่คุณต้องการ

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

ลองมาดูโปรแกรมง่ายๆที่คุณอาจต้องการโหลดข้อมูล จากสเปรดชีตไปยังอาร์เรย์หลายมิติ

ตัวอย่างเช่นลองดูที่สเปรดชีตการขายผลิตภัณฑ์ที่คุณต้องการดึงชื่อตัวแทนรายการและยอดขายทั้งหมดออกจากสเปรดชีต

โปรดทราบว่าใน 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

หากคุณไม่เห็นนักพัฒนาในเมนูคุณจะต้อง เพิ่มมัน ในการทำสิ่งนี้ให้เลือก ไฟล์และ ตัวเลือกเพื่อเปิดหน้าต่างตัวเลือกของ Excel

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

เมื่อหน้าต่างตัวแก้ไขรหัสเปิดขึ้นตรวจสอบให้แน่ใจว่ามีการเลือกแผ่นข้อมูลของคุณในบานหน้าต่างด้านซ้าย เลือก แผ่นงานในรายการแบบเลื่อนลงด้านซ้ายและ เปิดใช้งานทางด้านขวา สิ่งนี้จะสร้างรูทีนย่อยใหม่ชื่อว่า Worksheet_Activate ()

ฟังก์ชันนี้จะทำงานทุกครั้งที่เปิดไฟล์สเปรดชีต วางรหัสลงในบานหน้าต่างสคริปต์ภายในรูทีนย่อยนี้

<รูป class = "สันโดษขนาดกลางใหญ่">

สคริปต์นี้จะทำงานผ่าน 12 แถวและจะโหลดชื่อตัวแทนจากคอลัมน์ 3 รายการจากคอลัมน์ 4 และยอดขายรวมจากคอลัมน์ 7

<รูป class =" lazy aligncenter size-large ">

เมื่อทั้งสองลูปสำหรับลูปเสร็จสิ้นแล้วอาร์เรย์สองมิติ 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% สำหรับจำนวนภาษี

แผ่นงานที่ได้จะมีลักษณะเช่นนี้

<รูป class = "lazy aligncenter size-large">

อย่างที่คุณเห็นอาร์เรย์ VBA ใน Excel มีประโยชน์อย่างยิ่งและมีความหลากหลายเช่นเดียวกับ เคล็ดลับ Excel อื่น ๆ

ตัวอย่างข้างต้นเป็นการใช้งานที่ง่ายมากสำหรับอาร์เรย์ คุณสามารถสร้างอาร์เรย์ที่ใหญ่กว่าและทำการเรียงลำดับเฉลี่ยหรือฟังก์ชั่นอื่น ๆ กับข้อมูลที่คุณเก็บไว้ในนั้น

หากคุณต้องการได้รับโฆษณาจริงคุณสามารถสร้างสองอาร์เรย์ มีช่วงของเซลล์ จากแผ่นงานสองแผ่นที่แตกต่างกันและทำการคำนวณระหว่างองค์ประกอบของแต่ละแถว

แอปพลิเคชันนั้นถูก จำกัด ด้วยจินตนาการของคุณเท่านั้น

สอน Excel VBA: การใช้ Array ตอนที่ 1 การสร้างและใช้งานตัวแปรอะเรย์เบื้องต้น

กระทู้ที่เกี่ยวข้อง:


18.01.2020