OFFSET ควรทำงานกับข้อมูล EXCEL ที่กรองอย่างไร


3

พิจารณา:

    +---------------+
    | Column A      |
+---+---------------+
| 1 | Milan         |
+---+---------------+
| 2 | Paris         |
+---+---------------+
| 3 | London        |
+---+---------------+
| 4 | Milan         |
+---+---------------+
| 5 | Firenza       |
+---+---------------+
| 6 | Napoli        |
+---+---------------+
| 7 | Amsterdam     |
+---+---------------+
| 8 | Copenhagen    |
+---+---------------+
| 9 | Amsterdam     |
+---+---------------+

สมมติว่าฉันกรองคอลัมน์ A เพื่อค้นหาเมืองในอิตาลี ผลลัพธ์ต่อไปนี้จะถูกส่งคืน

    +---------------+
    | Column A      |
+---+---------------+
| 1 | Milan         |
+---+---------------+
| 4 | Milan         |
+---+---------------+
| 5 | Firenza       |
+---+---------------+
| 6 | Napoli        |
+---+---------------+

ตอนนี้ให้พิจารณานิพจน์ต่อไปนี้:

=IFERROR(VLOOKUP($AR5,Copy!$I$1:$K$3,2,0),OFFSET($A$1,2,0))

ทำ OFFSET อ้างถึงทั้งแหล่งข้อมูล - ในกรณีนี้ค่าเริ่มต้นของฉันในกรณีที่มีข้อผิดพลาดจะเป็น London - หรือเฉพาะชุดผลลัพธ์ - ซึ่งในกรณีนี้ค่าเริ่มต้นของฉันในกรณีของข้อผิดพลาดจะเป็น Firenze?

ฉันเห็นผลลัพธ์ที่ไม่สอดคล้องกันในแผ่นงานของฉันและสิ่งที่จะ จำกัด ตัวเลือกการดีบักให้แคบลงโดยยกเลิกการจัดเรียงสิ่งที่ควรจะเกิดขึ้นในสถานการณ์นี้


คำตอบ:


2

ก่อนอื่นเกี่ยวกับสูตรการดีบั๊ก:

วิธีที่ดีที่สุดในการทำเช่นนี้คือการใช้ Evaluate formula ฟังก์ชั่น (ใน Formula แท็บ) นี่เป็นวิธีที่ดีมากในการดูว่าเกิดอะไรขึ้นในแต่ละขั้นตอน / พารามิเตอร์ นอกจากนี้หากคุณเน้นส่วนหนึ่งในสูตรของคุณ (เช่นสูตร OFFSET comple) ให้กด F9 . สิ่งนี้จะประเมินข้อความที่ถูกเน้นสีในแถบสูตร

OFFSET จะกลับมา Londonเนื่องจาก OFFSET จะพิจารณาเซลล์ที่ซ่อนอยู่ด้วย

หากคุณต้องการส่งคืนเซลล์ที่มองเห็นที่สองคุณต้องมีเคล็ดลับเล็ก ๆ ที่เกี่ยวข้องกับคอลัมน์พิเศษ: วางสูตร =SUBTOTAL(3,A1)+C1 ใน C2 (สมมติว่าตารางของคุณเริ่มต้นในแถว 1 และคอลัมน์ C พร้อมใช้งานจากนั้นคัดลอกสูตรลงตอนนี้จะแสดงตัวนับสำหรับเซลล์ที่มองเห็นทั้งหมดเช่นตัวเลขจะเปลี่ยนตามตัวกรองอัตโนมัติ

ตอนนี้สูตร =INDEX(A:A,MATCH(2,C:C,0)) จะส่งคืนองค์ประกอบที่มองเห็นที่สองให้คุณ


3

ฉันไม่เชื่อ OFFSET() ไม่รวมข้อมูลที่ถูกซ่อน / กรอง จากตัวอย่างด้านล่างคุณจะเห็นได้ว่าแม้สูตรบางส่วนจะถูกซ่อน / กรองข้อมูลก็ตาม C1 ชี้ไปที่เซลล์เดียวกัน

enter image description here

ในการรับรายการที่ 3 ที่มองเห็นได้จากรายการของคุณคุณสามารถใช้สูตรอาร์เรย์นี้ได้ 1 :

=INDEX(xmen,
       SMALL(IF(SUBTOTAL(3,OFFSET(xmen,ROW(xmen)-ROW(A2),0,1)),ROW(xmen)),3)-1,1)

ที่ไหน:

xmen →หมายถึงช่วงข้อมูลของคุณไม่รวมส่วนหัวใด ๆ ( A1:A9 ในตัวอย่างของคุณ A2:A9 ในตัวอย่างด้านล่าง)
A2 →ชี้ไปที่รายการแรกในช่วงของคุณ (ไม่ใช่ส่วนหัว)

ตัวอย่างเช่น:

enter image description here

-
1 จะต้องมุ่งมั่น / ป้อนโดยใช้ Ctrl + เปลี่ยน + เข้าสู่ หลังจากคุณรวมเข้ากับสูตร VLOOKUP ของคุณ


0

ทำให้มันง่ายด้วยสิ่งนี้:

=VLOOKUP(SUBTOTAL(5,A:A),A:B,2,FALSE)

พบจำนวนน้อยที่สุดที่มองเห็นได้ (ผลรวมย่อย 5 ขั้นต่ำ) และ vlookup ค่า (ซึ่งจะใช้ค่าแรกที่พบกับหมายเลขดัชนีนั้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.