Note: The other languages of the website are Google-translated. Back to English

วิธีแยกค่าที่ไม่ซ้ำจากหลายคอลัมน์ใน Excel

สมมติว่าคุณมีหลายคอลัมน์ที่มีหลายค่าค่าบางค่าจะซ้ำกันในคอลัมน์เดียวกันหรือคนละคอลัมน์ และตอนนี้คุณต้องการค้นหาค่าที่มีอยู่ในคอลัมน์ใดคอลัมน์หนึ่งเพียงครั้งเดียว มีเคล็ดลับง่ายๆสำหรับคุณในการดึงค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ใน Excel หรือไม่?


แยกค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ด้วยสูตรอาร์เรย์

นี่คือสูตรอาร์เรย์ยังสามารถช่วยคุณแยกค่าที่ไม่ซ้ำกันจากหลายคอลัมน์

1. สมมติว่าค่าของคุณอยู่ในช่วง A2: C9โปรดป้อนสูตรต่อไปนี้ลงในเซลล์ E2:

=INDIRECT(TEXT(MIN(IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&""

หมายเหตุ: ในสูตรข้างต้น A2: C9 ระบุช่วงของเซลล์ที่คุณต้องการดึงค่าเฉพาะ E1: E1 คือเซลล์แรกของคอลัมน์ที่คุณต้องการวางผลลัพธ์ $ 2: $ 9 แถวนั้นมีเซลล์ที่คุณต้องการใช้และ $ A: $ C ระบุว่าคอลัมน์มีเซลล์ที่คุณต้องการใช้ โปรดเปลี่ยนเป็นของคุณเอง

2. จากนั้นกด Shift + Ctrl + Enter เข้าด้วยกันจากนั้นลากจุดจับเติมเพื่อแยกค่าที่ไม่ซ้ำกันจนกว่าเซลล์ว่างจะปรากฏขึ้น ดูภาพหน้าจอ:


แยกค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ด้วย Pivot Table

หากคุณคุ้นเคยกับตาราง Pivot คุณสามารถแยกค่าที่ไม่ซ้ำกันออกจากคอลัมน์หลายคอลัมน์โดยทำตามขั้นตอนต่อไปนี้:

1. ในตอนแรกโปรดแทรกคอลัมน์ว่างใหม่ทางด้านซ้ายของข้อมูลในตัวอย่างนี้ฉันจะแทรกคอลัมน์ A ข้างข้อมูลต้นฉบับ

2. คลิกเซลล์หนึ่งเซลล์ในข้อมูลของคุณแล้วกด Alt + D จากนั้นกด P ทันทีเพื่อเปิดไฟล์ PivotTable และ PivotChart Wizardเลือก ช่วงการรวมหลายรายการ ในวิซาร์ด step1 ดูภาพหน้าจอ:

3. จากนั้นคลิก ต่อไป ปุ่มตรวจสอบ สร้างฟิลด์หน้าเดียวให้ฉัน ตัวเลือกในวิซาร์ด step2 ดูภาพหน้าจอ:

4. ไปที่การคลิก ต่อไป คลิกเพื่อเลือกช่วงข้อมูลซึ่งรวมคอลัมน์ใหม่ทางซ้ายของเซลล์จากนั้นคลิก เพิ่ม เพื่อเพิ่มช่วงข้อมูลลงในไฟล์ ทุกช่วง กล่องรายการดูภาพหน้าจอ:

5. หลังจากเลือกช่วงข้อมูลแล้วให้คลิกต่อ ต่อไปในวิซาร์ดขั้นตอนที่ 3 ให้เลือกตำแหน่งที่คุณต้องการวางรายงาน PivotTable ตามที่คุณต้องการ

6. ในที่สุดคลิก เสร็จสิ้น เพื่อทำวิซาร์ดให้เสร็จสมบูรณ์และมีการสร้างตาราง Pivot ในแผ่นงานปัจจุบันจากนั้นยกเลิกการเลือกฟิลด์ทั้งหมดจาก เลือกช่องที่จะเพิ่มในรายงาน ส่วนดูภาพหน้าจอ:

7. จากนั้นตรวจสอบฟิลด์ ความคุ้มค่า หรือลากค่าไปที่ แถว ตอนนี้คุณจะได้รับค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ดังนี้:


แยกค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ด้วยรหัส VBA

ด้วยรหัส VBA ต่อไปนี้คุณยังสามารถแยกค่าที่ไม่ซ้ำกันจากหลายคอลัมน์ได้

1. กด ALT + F11 และจะเปิดไฟล์ หน้าต่าง Microsoft Visual Basic for Applications.

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในหน้าต่างโมดูล

VBA: ดึงค่าที่ไม่ซ้ำกันจากหลายคอลัมน์

Sub Uniquedata()
'Updateby Extendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
Set dt = CreateObject("Scripting.Dictionary")
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
For Each rng In InputRng
    If rng.Value <> "" Then
        dt(rng.Value) = ""
    End If
Next
OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction.Transpose(dt.Keys)
End Sub

3. จากนั้นกด F5 เพื่อเรียกใช้รหัสนี้และกล่องพร้อมต์จะปรากฏขึ้นเพื่อเตือนให้คุณเลือกช่วงข้อมูลที่คุณต้องการใช้ ดูภาพหน้าจอ:

4. จากนั้นคลิก OKกล่องข้อความแจ้งอีกอันจะปรากฏขึ้นเพื่อให้คุณเลือกสถานที่ที่จะใส่ผลลัพธ์ดูภาพหน้าจอ:

5. คลิก OK เพื่อปิดกล่องโต้ตอบนี้และค่าที่ไม่ซ้ำกันทั้งหมดจะถูกแยกออกพร้อมกัน


ดึงค่าที่ไม่ซ้ำกันจากคอลัมน์เดียวด้วยคุณสมบัติที่น่าทึ่ง

บางครั้งคุณต้องดึงค่าที่ไม่ซ้ำกันออกจากคอลัมน์เดียววิธีการข้างต้นจะไม่ช่วยคุณที่นี่ฉันขอแนะนำเครื่องมือที่มีประโยชน์ -Kutools สำหรับ Excelเดียวกันกับที่ แยกเซลล์ด้วยค่าที่ไม่ซ้ำกัน (รวมรายการที่ซ้ำกันครั้งแรก) ยูทิลิตี้คุณสามารถดึงค่าเฉพาะได้อย่างรวดเร็ว

หมายเหตุที่จะใช้สิ่งนี้ แยกเซลล์ด้วยค่าที่ไม่ซ้ำกัน (รวมรายการที่ซ้ำกันครั้งแรก)ประการแรกคุณควรดาวน์โหลดไฟล์ Kutools สำหรับ Excelแล้วใช้คุณสมบัตินี้อย่างรวดเร็วและง่ายดาย

หลังจากการติดตั้ง Kutools สำหรับ Excelโปรดทำตามนี้:

1. คลิกเซลล์ที่คุณต้องการให้ผลลัพธ์ออกมา (หมายเหตุ: อย่าคลิกเซลล์ในแถวแรก)

2. จากนั้นคลิก Kutools > ตัวช่วยสูตร > ตัวช่วยสูตรดูภาพหน้าจอ:

3. ใน ตัวช่วยสูตร โปรดดำเนินการดังต่อไปนี้:

  • เลือก ข้อความ ตัวเลือกจาก สูตร ชนิดภาพเขียน รายการแบบหล่นลง
  • จากนั้นเลือก แยกเซลล์ด้วยค่าที่ไม่ซ้ำกัน (รวมรายการที่ซ้ำกันครั้งแรก) จาก เลือก fromula กล่องรายการ;
  • ทางด้านขวา การป้อนอาร์กิวเมนต์ เลือกรายการเซลล์ที่คุณต้องการแยกค่าที่ไม่ซ้ำกัน

4. จากนั้นคลิก Ok แล้วลากจุดจับเติมไปยังเซลล์ที่คุณต้องการแสดงรายการค่าที่ไม่ซ้ำกันทั้งหมดจนกว่าเซลล์ว่างจะปรากฏขึ้นดูภาพหน้าจอ:

ดาวน์โหลด Kutools for Excel ได้ฟรีทันที!


บทความที่เกี่ยวข้องเพิ่มเติม:

  • นับจำนวนค่าที่เป็นเอกลักษณ์และแตกต่างจากรายการ
  • สมมติว่าคุณมีรายการค่าที่ยาวพร้อมกับรายการที่ซ้ำกันบางรายการตอนนี้คุณต้องการนับจำนวนค่าที่ไม่ซ้ำกัน (ค่าที่ปรากฏในรายการเพียงครั้งเดียว) หรือค่าที่ไม่ซ้ำกัน (ค่าที่แตกต่างกันทั้งหมดในรายการหมายความว่าไม่ซ้ำกัน ค่า + ค่าที่ซ้ำกันครั้งที่ 1) ในคอลัมน์ตามภาพหน้าจอด้านซ้ายที่แสดง บทความนี้ฉันจะพูดถึงวิธีจัดการกับงานนี้ใน Excel
  • แยกค่าที่ไม่ซ้ำกันตามเกณฑ์ใน Excel
  • สมมติว่าคุณมีช่วงข้อมูลต่อไปนี้ที่คุณต้องการแสดงเฉพาะชื่อเฉพาะของคอลัมน์ B ตามเกณฑ์เฉพาะของคอลัมน์ A เพื่อให้ได้ผลลัพธ์ตามภาพด้านล่างที่แสดง คุณจะจัดการกับงานนี้ใน Excel อย่างรวดเร็วและง่ายดายได้อย่างไร?
  • อนุญาตเฉพาะค่าที่ไม่ซ้ำใน Excel
  • หากคุณต้องการเก็บเฉพาะค่าที่ไม่ซ้ำกันเท่านั้นที่ป้อนในคอลัมน์ของแผ่นงานและป้องกันไม่ให้ซ้ำกันบทความนี้จะแนะนำเคล็ดลับง่ายๆสำหรับคุณในการจัดการกับงานนี้
  • รวมค่าที่ไม่ซ้ำกันตามเกณฑ์ใน Excel
  • ตัวอย่างเช่นฉันมีช่วงของข้อมูลที่มีคอลัมน์ชื่อและลำดับในขณะนี้เพื่อรวมเฉพาะค่าที่ไม่ซ้ำกันในคอลัมน์คำสั่งซื้อตามคอลัมน์ชื่อตามภาพหน้าจอต่อไปนี้ วิธีแก้ปัญหานี้อย่างรวดเร็วและง่ายดายใน Excel

เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel แก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office/Excel 2007-2021 และ 365 รองรับทุกภาษา ง่ายต่อการปรับใช้ในองค์กรหรือองค์กรของคุณ คุณสมบัติเต็มรูปแบบ ทดลองใช้ฟรี 30 วัน รับประกันคืนเงินภายใน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (31)
ได้รับคะแนน 5 จาก 5 · การจัดอันดับ 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Is this formula complete? =INDIRECT(TEXT(MIN(IF(($A$2:$C$9"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&"",
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ยังไม่ได้รับการแก้ไข :sad:
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เสียเวลาเปล่า.....สูตรไม่ได้ผล
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอขอบคุณ!!! ฉันใช้เวลาหลายชั่วโมงในการทำเช่นนี้และค้นหาว่าเกิดอะไรขึ้นกับ Pivot Wizard (บทความอื่น)
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันกำลังใช้รหัส VBA ของคุณ แต่ไม่ต้องการให้กล่องปรากฏขึ้น ฉันต้องการกำหนดอย่างแน่ชัดว่าจะใช้ช่วงของเซลล์ใดทุกครั้งและกล่องใดที่จะใส่เอาต์พุต ช่วงอินพุตและเอาต์พุตจะอยู่บนแผ่นงานสองแผ่นที่แตกต่างกัน ฉันจะอัปเดต VBA ได้อย่างไร ขอขอบคุณ!!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เฮ้! ไม่มีใครรู้ว่าเหตุใดสูตรนี้จึงทำให้เกิดข้อผิดพลาดหลังจากแถว 87 ชอบ มันทำงานได้อย่างสมบูรณ์ และเมื่อถึงจุดหนึ่ง มันก็ส่งคืนข้อผิดพลาดให้ฉันทุกแถว.. ซึ่งแย่ที่สุด! เพราะผมใกล้จะถึงแล้ว...
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
=INDIRECT(TEXT(MIN(IF(($A$2:$C$9"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&"" It doesn't work
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันต้องการแยกเซลล์ที่ไม่ซ้ำออกจากคอลัมน์แรกเมื่อฉันเปรียบเทียบกับคอลัมน์อื่น (ฉันมีสามคอลัมน์ไม่เท่ากัน) ฉันจะทำอย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันมีสามคอลัมน์ที่ไม่เท่ากันและต้องการแยกเซลล์ที่ไม่ซ้ำของคอลัมน์แรก ฉันจะทำอย่างไร?? ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันรัก

ดึงค่าที่ไม่ซ้ำจากหลายคอลัมน์ด้วย Pivot Table
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณช่วยกรุณาส่งสูตรที่ถูกต้อง... ฟังก์ชัน VBA ทำงานได้ดี
สำหรับโครงการของฉัน ฉันค่อนข้างใช้สูตรที่ถูกต้อง


ขอบคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ไม่มีใครรู้สำหรับผลลัพธ์วิธีการทำให้เป็นหลายบรรทัด แต่ไม่ใช่บรรทัดเดียว? (ปัจจุบันได้ผลลัพธ์หนึ่งบรรทัดโดย worksheetfunction.transpose แต่สิ่งที่ฉันต้องการบรรลุ (ตามผลลัพธ์) คือเมื่อเลือกสำหรับ 3 คอลัมน์ผลลัพธ์ที่ได้กลับเป็น 3 คอลัมน์แทนหนึ่ง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สูตรอาร์เรย์นี้ถูกต้อง ข้อมูลในคอลัมน์ A ถึง C ผลลัพธ์แรกคือสูตรในเซลล์ D2... อันนี้แตกต่างจากสูตรอาร์เรย์อื่นๆ ที่ภายหลังจะคัดลอกสูตรลงมา และ Ctrl+Shift+Enter all formula อย่างไรก็ตาม สูตรอาร์เรย์นี้ควรกด Ctrl+Shift+Enter ในเซลล์แรกแล้วคัดลอกลง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Muchas gracias por la มาโคร!!! me fue muy util
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันได้ปรับเป็นชีตของฉันแล้ว แต่กำลังส่งคืนเฉพาะค่าแรกในอาร์เรย์ที่กำหนด... ฉันพลาดอะไรไป
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีโคดี้
สูตรข้างต้นทำงานได้ดีในแผ่นงานของฉัน คุณช่วยส่งภาพหน้าจอของปัญหาข้อมูลของคุณที่นี่ได้ไหม
ขอขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เกี่ยวกับเวอร์ชันของสูตร คุณช่วยอธิบายรายละเอียดเพิ่มเติมว่าส่วนนี้ทำอะไรได้บ้าง *100+COLUMN($A:$C),7^8)),"R0C00") โดยเฉพาะ . คืออะไร * 100, 7 8 ^และ "R0C000" ทำ? ฉันเข้าใจทุกอย่างแล้ว แต่ฉันไม่รู้ว่าสิ่งเหล่านี้มีไว้เพื่ออะไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ตอบช้าไปหน่อยแต่...
ROW($2:$9)*100 - นี่คือการคูณจำนวนแถว *100 ดังนั้นหากอยู่ในแถวที่ 5 ตอนนี้จำนวนจะเป็น 500
COLUMN($A:$C) - จะถูกเพิ่มเข้าไปในแถว*100 หมายเลข ดังนั้นหากเป็นแถวที่ 5 col 2 ตัวเลขก็คือ 502
7^8)) - นี่ (ฉันคิดว่า) คือการมีค่าสูงสุดสำหรับคำสั่ง min จากก่อนหน้านี้
"R0C00") - จัดรูปแบบข้อความตามตัวเลข ในตัวอย่าง เรามี 502 นี่จึงให้ R5C02 (แถว 5, col 02)

หากคุณมีคอลัมน์จำนวนมากแต่มีแถวไม่มากนัก คุณสามารถเปลี่ยนเป็น ROW($2:$9)*1000+COLUMN($A:$C),7^8)),"R0C000")
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับรหัส ฉันใช้รหัส VBA ของหน้านี้ มีวิธีเพิ่มรหัสการจัดเรียงหลังจากแยกค่าเฉพาะแล้วเพื่อให้เรียงลำดับโดยอัตโนมัติหรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เราสามารถสร้างฟังก์ชัน uniqdata แทนมาโครได้หรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี İlhan ถ้าคุณชอบ User Defined Function ในการสร้างสูตรสำหรับแก้ปัญหานี้ โค้ดด้านล่างนี้อาจช่วยคุณได้:หลังจากใส่โค้ดแล้ว ให้เลือกรายการเซลล์ที่คุณต้องการใส่ผลลัพธ์ จากนั้นพิมพ์สูตรนี้:=ไม่ซ้ำกัน(A1:C4)  ในแถบสูตร กด Ctrl + Shift + Enter คีย์ร่วมกัน 


Function Uniques(ByVal inputRange As Range)
Dim inputArray As Variant
Dim myColl As New Collection
Dim xVal As Variant
Dim outArray() As Variant
On Error Resume Next
With inputRange
inputArray = Application.Intersect(.Cells, .Parent.UsedRange).Value
End With
On Error GoTo 0
On Error Resume Next
For Each xVal In inputArray
myColl.*** Item:=xVal, Key:=(CStr(xVal) & TypeName(xVal))
Next xVal
myColl.Remove "String"
On Error GoTo 0
ReDim outArray(1 To Application.Max(myColl.Count, Application.Caller.Cells.Count))
For xVal = 1 To UBound(outArray)
outArray(xVal) = vbNullString
Next xVal
For xVal = 1 To Application.Min(myColl.Count, Application.Caller.Cells.Count)
outArray(xVal) = myColl(xVal)
Next xVal
If Application.Caller.Columns.Count = 1 Then
Uniques = Application.Transpose(outArray)
Else
Uniques = outArray
End If
End Function
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Czy ถึง żart?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สูตรอาร์เรย์ที่ด้านบนทำงานได้ดีเมื่อใช้กับข้อมูลในชีตเดียวกัน แต่เมื่อฉันพยายามใช้เพื่ออ้างอิงข้อมูลเดียวกันจากชีตอื่น สูตรจะไม่ส่งคืนสิ่งใด ฉันไม่สามารถเข้าใจได้ว่าทำไม มีข้อจำกัดเกี่ยวกับฟังก์ชันอาร์เรย์ที่ป้องกันไม่ให้คุณอ้างอิงช่วงในชีตอื่นหรือไม่

ขอบคุณสำหรับข้อมูลเชิงลึกที่คุณสามารถให้ได้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีเอริน

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

ตัวอย่างเช่น ตอนนี้ข้อมูลอยู่ใน Sheet1 ฉันต้องการอ้างอิงเนื้อหาของเซลล์ C2 ของ Sheet1 ใน Sheet2 ขั้นแรก ในสองเซลล์ใดๆ ใน Sheet2 เช่น D1 และ D2 ให้ป้อน Sheet1 และ C2 ตามลำดับ ณ จุดนี้ ให้ป้อนสูตรในเซลล์ว่างของ Sheet2:
=INDIRECT("'"&D1&"'!"&D2) จึงสามารถส่งคืนเนื้อหาของเซลล์ C2 ใน Sheet1 ได้

อย่างที่คุณเห็น มันทำให้สิ่งต่าง ๆ ซับซ้อนขึ้น หวังว่าคำอธิบายของฉันจะช่วยได้ ขอให้เป็นวันที่ดี.

ขอแสดงความนับถือ
แมนดี้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! VBA ทำงานได้อย่างมหัศจรรย์ ขอบคุณมากสำหรับสิ่งนั้น! ฉันสงสัยว่าถ้าฉันเปลี่ยนข้อมูลเดิม เป็นไปได้ไหมที่จะรีเฟรชคอลัมน์ด้วยค่าที่ไม่ซ้ำกันโดยอัตโนมัติ
ได้รับคะแนน 5 จาก 5
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี อิออนนิส

ดีใจที่ได้ช่วยเหลือ หลังจากที่คุณเปลี่ยนข้อมูลเดิม VBA จะไม่สามารถรีเฟรชผลลัพธ์โดยอัตโนมัติได้ และวิธีที่ง่ายที่สุดที่ฉันคิดได้คือกด Ctrl + Alt + F9 เพื่อรีเฟรชผลลัพธ์ทั้งหมดในเวิร์กชีตในเวิร์กบุ๊กที่เปิดอยู่ทั้งหมด ขอให้เป็นวันที่ดี.

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

สำหรับคนที่ใช้ สูตรอาร์เรย์ใน Excel ที่ไม่ใช่ภาษาอังกฤษ สตริงรูปแบบข้อความจะต้องได้รับการดูแลเป็นพิเศษ: ในตัวอย่างของคุณ: "R0C00"
สำหรับภาษาเยอรมัน จะแปลว่า "Z0S00" อย่างไรก็ตาม "S" เป็นอักขระพิเศษที่อ้างถึงวินาทีสำหรับการจัดรูปแบบเวลา อักขระนี้ต้องหลีกเลี่ยง ดังนั้นสตริงรูปแบบที่ถูกต้องสำหรับ Excel ภาษาเยอรมันคือ "Z0\S00"

ฉันหวังว่านี่จะช่วยใครบางคนในอนาคต :-)
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ

ช่องทางอื่นๆ

ลิขสิทธิ์© 2009 - wwwextendoffice.com | สงวนลิขสิทธิ์. ขับเคลื่อนโดย ExtendOffice. | แผนผังเว็บไซต์
Microsoft และโลโก้ Office เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Microsoft Corporation ในสหรัฐอเมริกาและ / หรือประเทศอื่น ๆ
ได้รับการปกป้องโดย Sectigo SSL