Isi kandungan
Dalam tutorial ini, kami akan menerangkan sedikit tentang salah satu penghuni paling misteri di alam semesta Excel - fungsi OFFSET.
Jadi, apakah itu OFFSET dalam Excel? Secara ringkasnya, formula OFFSET mengembalikan rujukan kepada julat yang diimbangi daripada sel permulaan atau julat sel dengan bilangan baris dan lajur yang ditentukan.
Fungsi OFFSET mungkin agak sukar untuk diperoleh , jadi mari kita semak penjelasan teknikal ringkas terlebih dahulu (saya akan melakukan yang terbaik untuk memastikannya mudah) dan kemudian kita akan membincangkan beberapa cara paling berkesan untuk menggunakan OFFSET dalam Excel.
Fungsi OFFSET Excel - sintaks dan kegunaan asas
Fungsi OFFSET dalam Excel mengembalikan sel atau julat sel yang merupakan bilangan baris dan lajur tertentu daripada sel atau julat tertentu.
Sintaks fungsi OFFSET adalah seperti berikut:
OFFSET(rujukan, baris, kol, [tinggi], [lebar])3 argumen pertama diperlukan dan 2 yang terakhir adalah pilihan. Semua argumen boleh menjadi rujukan kepada sel lain atau hasil yang dikembalikan oleh formula lain.
Nampaknya Microsoft berusaha keras untuk meletakkan beberapa makna pada nama parameter dan ia memberi petunjuk tentang perkara yang anda sepatutnya dinyatakan dalam setiap satu.
Argumen yang diperlukan:
- Rujukan - sel atau julat sel bersebelahan yang anda asaskan offset. Anda boleh menganggapnya sebagai titik permulaan.
- Baris - Bilangan barislajur (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Saya tahu formula kelihatan agak kekok, tetapi ia berfungsi :)
Contoh 2 Bagaimana untuk melakukan carian atas dalam Excel
Seperti halnya dengan VLOOKUP tidak dapat melihat ke kiri, rakan sejawatannya mendatar - fungsi HLOOKUP - tidak boleh melihat ke atas untuk mengembalikan nilai.
Jika anda perlu mengimbas baris atas untuk padanan, formula OFFSET MATCH boleh membantu sekali lagi, tetapi kali ini anda perlu meningkatkannya dengan fungsi COLUMNS, seperti ini:
OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, COLUMNS( lookup_table )) , 0) -1, 1, 1)Di mana:
- Lookup_row_offset - bilangan baris untuk dialihkan dari titik permulaan ke baris carian.
- Return_row_offset - bilangan baris untuk dialihkan dari titik permulaan ke baris balik.
Dengan mengandaikan bahawa jadual carian ialah B4:F5 dan nilai carian berada dalam sel B1, formulanya adalah seperti berikut:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
Dalam kes kami, offset baris carian ialah 1 kerana julat carian kami adalah 1 baris ke bawah dari titik permulaan, offset baris balik ialah 0 kerana kami mengembalikan padanan dari baris pertama dalam jadual.
Contoh 3. Carian dua hala (mengikut nilai lajur dan baris)
Pencarian dua hala mengembalikan nilai berdasarkan padanan dalam kedua-dua baris dan lajur. Dan anda boleh menggunakan yang berikutformula tatasusunan carian berganda untuk mencari nilai pada persilangan baris dan lajur tertentu:
=OFFSET( jadual carian , MATCH( nilai carian baris , OFFSET( jadual carian , 0, 0, ROWS( jadual carian ), 1), 0) -1, MATCH( nilai carian lajur , OFFSET( jadual carian , 0, 0, 1, COLUMNS( jadual carian )), 0) -1)Memandangkan:
- Jadual carian ialah A5:G9
- Nilai untuk dipadankan pada baris adalah dalam B2
- Nilai untuk dipadankan pada lajur adalah dalam B1
Anda mendapat formula carian dua dimensi berikut:
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)
Ia bukan perkara yang paling mudah untuk diingati, bukan? Selain itu, ini ialah formula tatasusunan, jadi jangan lupa tekan Ctrl + Shift + Enter untuk memasukkannya dengan betul.
Sudah tentu, formula OFFSET yang panjang ini tidak satu-satunya cara yang mungkin untuk melakukan carian berganda dalam Excel. Anda boleh mendapatkan hasil yang sama dengan menggunakan VLOOKUP & fungsi MATCH, SUMPRODUCT atau INDEX & PERLAWANAN. Malah terdapat cara bebas formula - untuk menggunakan julat bernama dan operator persimpangan (ruang). Tutorial berikut menerangkan semua penyelesaian alternatif dengan terperinci penuh: Cara melakukan carian dua hala dalam Excel.
Fungsi OFFSET - had dan alternatif
Mudah-mudahan, contoh formula pada halaman ini telah mengurangkan sedikit penerangan tentang cara menggunakan OFFSET dalam Excel. Walau bagaimanapun, untuk memanfaatkan fungsi dalam buku kerja anda sendiri dengan cekap, anda bukan sahaja sepatutnyaberpengetahuan tentang kekuatannya, tetapi juga berhati-hati terhadap kelemahannya.
Batasan paling kritikal bagi fungsi Excel OFFSET adalah seperti berikut:
- Seperti fungsi lain yang tidak menentu, OFFSET ialah fungsi haus sumber . Setiap kali terdapat sebarang perubahan dalam data sumber, formula OFFSET anda dikira semula, menjadikan Excel sibuk sedikit lebih lama. Ini bukan isu untuk formula tunggal dalam hamparan kecil. Tetapi jika terdapat berpuluh-puluh atau beratus-ratus formula dalam buku kerja, Microsoft Excel mungkin mengambil masa yang agak lama untuk mengira semula.
- Formula Excel OFFSET sukar untuk disemak . Oleh kerana rujukan yang dikembalikan oleh fungsi OFFSET adalah dinamik, formula besar (terutamanya dengan OFFSET bersarang) boleh menjadi agak sukar untuk dinyahpepijat.
Alternatif untuk menggunakan OFFSET dalam Excel
Seperti yang selalunya kes dalam Excel, hasil yang sama boleh dicapai dalam beberapa cara yang berbeza. Jadi, berikut ialah tiga alternatif elegan untuk OFFSET.
- Jadual Excel
Sejak Excel 2002, kami mempunyai ciri yang benar-benar hebat - jadual Excel lengkap, berbanding dengan julat biasa. Untuk membuat jadual daripada data berstruktur, anda hanya klik Sisipkan > Jadual pada tab Home atau tekan Ctrl + T .
Dengan memasukkan formula dalam satu sel dalam jadual Excel, anda boleh mencipta apa yang dipanggil "lajur dikira" yang secara automatik menyalin formula ke semua sel lain dalam lajur itu dan melaraskanformula untuk setiap baris dalam jadual.
Selain itu, sebarang formula yang merujuk kepada data jadual akan dilaraskan secara automatik untuk memasukkan sebarang baris baharu yang anda tambahkan pada jadual atau mengecualikan baris yang anda padamkan. Secara teknikal, formula sedemikian beroperasi pada lajur atau baris jadual, yang bersifat julat dinamik . Setiap jadual dalam buku kerja mempunyai nama unik (yang lalai ialah Jadual1, Jadual2, dsb.) dan anda bebas menamakan semula jadual anda melalui tab Reka Bentuk > Properties kumpulan > ; Nama Jadual kotak teks.
Tangkapan skrin berikut menunjukkan formula SUM yang merujuk kepada lajur Bonus Jadual3. Sila ambil perhatian bahawa formula termasuk nama lajur jadual dan bukannya julat sel.
- fungsi Excel INDEX
Walaupun tidak betul-betul dalam cara yang sama seperti OFFSET, Excel INDEX juga boleh digunakan untuk membuat rujukan julat dinamik. Tidak seperti OFFSET, fungsi INDEX tidak meruap, jadi ia tidak akan memperlahankan Excel anda.
- Fungsi INDEX Excel
Menggunakan fungsi INDEX anda boleh mencipta julat dinamik rujukan daripada banyak sumber seperti nilai sel, nilai sel dan teks, julat bernama. Ia juga boleh merujuk secara dinamik pada helaian atau buku kerja Excel yang lain. Anda boleh menemui semua contoh formula ini dalam tutorial fungsi Excel INDIRECT kami.
Adakah anda masih ingat soalan yang ditanya pada permulaan tutorial ini - Apakah OFFSET dalam Excel? Saya harap sekarang anda tahu jawapannya : ) Jika anda mahukan lebih banyak pengalaman praktikal, sila muat turun buku kerja amalan kami (sila lihat di bawah) yang mengandungi semua formula yang dibincangkan mengenai perkara ini halaman dan kejuruteraan terbalik untuk pemahaman yang lebih mendalam. Terima kasih kerana membaca!
Berlatih buku kerja untuk muat turun
contoh formula OFFSET (fail.xlsx)
untuk bergerak dari titik permulaan, atas atau bawah. Jika baris ialah nombor positif, formula bergerak di bawah rujukan permulaan, sekiranya nombor negatif ia melebihi rujukan permulaan. - Kol - Bilangan lajur yang anda inginkan formula untuk bergerak dari titik permulaan. Serta baris, kol boleh menjadi positif (di sebelah kanan rujukan permulaan) atau negatif (di sebelah kiri rujukan permulaan).
Argumen pilihan:
- Ketinggian - bilangan baris untuk dikembalikan.
- Lebar - bilangan lajur untuk dikembalikan.
Ketinggian dan kedua-dua argumen lebar mestilah sentiasa nombor positif. Jika salah satu ditinggalkan, ia lalai kepada ketinggian atau lebar rujukan .
Nota. OFFSET ialah fungsi yang tidak menentu dan boleh melambatkan lembaran kerja anda. Kelambatan adalah berkadar terus dengan bilangan sel yang dikira semula.
Dan sekarang, mari kita ilustrasikan teori dengan contoh formula OFFSET yang paling mudah.
Contoh formula OFFSET Excel
Berikut ialah contoh formula OFFSET mudah yang mengembalikan rujukan sel berdasarkan titik permulaan, baris dan kol yang anda tentukan:
=OFFSET(A1,3,1)
Formula memberitahu Excel untuk mengambil sel A1 sebagai titik permulaan (rujukan), kemudian gerakkan 3 baris ke bawah (argumen baris) dan 1 lajur ke kiri (argumen kol). Hasilnya, formula OFFSET ini mengembalikan nilai dalam sel B4.
Imej di sebelah kirimenunjukkan laluan fungsi dan tangkapan skrin di sebelah kanan menunjukkan cara anda boleh menggunakan formula OFFSET pada data kehidupan sebenar. Satu-satunya perbezaan antara kedua-dua formula ialah formula kedua (di sebelah kanan) termasuk rujukan sel (E1) dalam hujah baris. Tetapi memandangkan sel E1 mengandungi nombor 3, dan nombor yang betul-betul sama muncul dalam argumen baris formula pertama, kedua-duanya akan mengembalikan hasil yang sama - nilai dalam B4.
Formula OFFSET Excel - perkara yang perlu diingat
- Fungsi OFFSET ialah Excel sebenarnya tidak memindahkan sebarang sel atau julat, ia hanya mengembalikan rujukan.
- Apabila formula OFFSET mengembalikan julat daripada sel, argumen baris dan cols sentiasa merujuk kepada sel kiri atas dalam kemarahan yang dikembalikan.
- Argumen rujukan mesti termasuk sel atau julat sel bersebelahan, jika tidak, formula anda akan mengembalikan #VALUE! ralat.
- Jika baris dan/atau kol yang ditentukan mengalihkan rujukan ke tepi hamparan, formula OFFSET Excel anda akan mengembalikan #REF! ralat.
- Fungsi OFFSET boleh digunakan dalam mana-mana fungsi Excel lain yang menerima rujukan sel / julat dalam argumennya.
Sebagai contoh, jika anda cuba menggunakan formula =OFFSET(A1,3,1,1,3)
dengan sendirinya, ia akan memberikan #NILAI! ralat, kerana julat untuk dikembalikan (1 baris, 3 lajur) tidak sesuai dengan satu sel. Walau bagaimanapun, jika anda membenamkannya ke dalam fungsi SUM, sepertiini:
=SUM(OFFSET(A1,3,1,1,3))
Formula akan mengembalikan jumlah nilai dalam julat 1 baris dengan 3 lajur iaitu 3 baris di bawah dan 1 lajur di sebelah kanan sel A1, iaitu jumlah nilai dalam sel B4:D4.
Mengapa saya menggunakan OFFSET dalam Excel?
Sekarang anda tahu apa fungsi OFFSET lakukan, anda boleh tanya diri anda "Mengapa perlu bersusah payah menggunakannya?" Mengapa tidak hanya menulis rujukan langsung seperti B4:D4?
Formula Excel OFFSET sangat bagus untuk:
Mencipta julat dinamik : Rujukan seperti B1:C4 adalah statik , bermakna mereka sentiasa merujuk kepada julat tertentu. Tetapi beberapa tugas lebih mudah dilakukan dengan julat dinamik. Ini terutamanya berlaku apabila anda bekerja dengan menukar data, mis. anda mempunyai lembaran kerja di mana baris atau lajur baharu ditambahkan setiap minggu.
Mendapatkan julat daripada sel permulaan . Kadangkala, anda mungkin tidak mengetahui alamat sebenar julat, walaupun anda tahu ia bermula dari sel tertentu. Dalam senario sedemikian, menggunakan OFFSET dalam Excel ialah cara yang betul.
Cara menggunakan fungsi OFFSET dalam Excel - contoh formula
Saya harap anda tidak bosan dengan teori yang begitu banyak . Bagaimanapun, kini kita sampai ke bahagian yang paling menarik - penggunaan praktikal fungsi OFFSET.
Fungsi Excel OFFSET dan SUM
Contoh yang kita bincangkan sebentar tadi menunjukkan penggunaan OFFSET & yang paling mudah ; JUMLAH. Sekarang, mari kita lihat fungsi ini pada sudut lain dan lihat apajika tidak, mereka boleh lakukan.
Contoh 1. Formula SUM / OFFSET dinamik
Apabila bekerja dengan lembaran kerja yang dikemas kini secara berterusan, anda mungkin mahu mempunyai formula SUM yang memilih semua baris yang baru ditambah secara automatik.
Andaikata, anda mempunyai data sumber yang serupa dengan apa yang anda lihat dalam tangkapan skrin di bawah. Setiap bulan baris baharu ditambah tepat di atas formula SUM dan secara semulajadi, anda mahu memasukkannya dalam jumlah keseluruhan. Pada keseluruhannya, terdapat dua pilihan - sama ada mengemas kini julat dalam formula SUM setiap kali secara manual atau minta formula OFFSET melakukan ini untuk anda.
Sejak sel pertama julat kepada jumlah akan ditentukan terus dalam formula SUM, anda hanya perlu memutuskan parameter untuk fungsi Excel OFFSET, yang akan mendapat sel terakhir julat itu:
-
Reference
- sel mengandungi jumlah, B9 dalam kes kami. -
Rows
- sel betul-betul di atas jumlah, yang memerlukan nombor negatif -1. -
Cols
- 0 kerana anda tidak mahu menukar lajur.
Jadi, berikut adalah corak formula SUM / OFFSET:
=SUM( sel pertama:(OFFSET( sel dengan jumlah, -1,0)Tweak untuk contoh di atas, formula kelihatan seperti berikut:
=SUM(B2:(OFFSET(B9, -1, 0)))
Dan seperti yang ditunjukkan dalam tangkapan skrin di bawah, ia berfungsi dengan sempurna:
Contoh 2. Formula OFFSET Excel untuk menjumlahkan baris N terakhir
Dalam contoh di atas, katakan anda ingin mengetahui jumlah bonus untukN bulan terakhir dan bukannya jumlah besar. Anda juga mahu formula memasukkan mana-mana baris baharu yang anda tambahkan pada helaian secara automatik.
Untuk tugasan ini, kami akan menggunakan Excel OFFSET dalam kombinasi dengan fungsi SUM dan COUNT / COUNTA:
=SUM(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
atau
=SUM(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Butiran berikut boleh membantu anda memahami formula dengan lebih baik:
-
Reference
- pengepala lajur yang nilainya ingin anda jumlahkan, sel B1 dalam contoh ini. -
Rows
- untuk mengira bilangan baris untuk mengimbangi, anda menggunakan sama ada fungsi COUNT atau COUNTA.COUNT mengembalikan bilangan sel dalam lajur B yang mengandungi nombor, yang anda tolak N bulan terakhir (nombornya ialah sel E1) dan tambah 1.
Jika COUNTA ialah fungsi pilihan anda, anda tidak perlu menambah 1, kerana fungsi ini mengira semua sel bukan kosong dan baris pengepala dengan nilai teks menambah sel tambahan yang diperlukan oleh formula kami. Sila ambil perhatian bahawa formula ini akan berfungsi dengan betul hanya pada struktur jadual yang serupa - satu baris pengepala diikuti dengan baris dengan nombor. Untuk reka letak jadual yang berbeza, anda mungkin perlu membuat beberapa pelarasan dalam formula OFFSET/COUNTA.
-
Cols
- bilangan lajur untuk mengimbangi ialah sifar (0). -
Height
- bilangan baris untuk jumlah dinyatakan dalam E1. -
Width
- 1 lajur.
Menggunakan fungsi OFFSET dengan AVERAGE, MAX, MIN
Dengan cara yang sama kerana kami mengira bonus untuk N bulan lepas, anda bolehdapatkan purata N hari, minggu atau tahun terakhir serta cari nilai maksimum atau minimumnya. Satu-satunya perbezaan antara formula ialah nama fungsi pertama:
=AVERAGE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
Kunci Manfaat formula ini berbanding PURATA(B5:B8) atau MAX(B5:B8) biasa ialah anda tidak perlu mengemas kini formula setiap kali jadual sumber anda dikemas kini. Tidak kira berapa banyak baris baharu ditambah atau dipadamkan dalam lembaran kerja anda, formula OFFSET akan sentiasa merujuk kepada bilangan sel terakhir (paling bawah) yang ditentukan dalam lajur.
Formula OFFSET Excel untuk mencipta julat dinamik
Digunakan bersama COUNTA, fungsi OFFSET boleh membantu anda membuat julat dinamik yang mungkin terbukti berguna dalam banyak senario, contohnya untuk mencipta senarai lungsur turun boleh dikemas kini secara automatik.
Formula OFFSET untuk julat dinamik adalah seperti berikut:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Di tengah-tengah formula ini, anda menggunakan fungsi COUNTA untuk mendapatkan bilangan sel bukan kosong dalam lajur sasaran. Nombor itu pergi ke hujah ketinggian OFFSET yang mengarahkannya bilangan baris untuk dikembalikan.
Selain itu, ia ialah formula Offset biasa, di mana:
- Rujukan ialah titik permulaan yang anda asaskan offset, contohnya Helaian1!$A$1.
- Baris dan
Cols
kedua-duanya adalah 0 kerana tiada lajur atau baris untuk diimbangi. - Lebar ialah 1 lajur.
Nota. Jika anda adalahmembuat julat dinamik dalam helaian semasa, tidak perlu memasukkan nama helaian dalam rujukan, Excel akan melakukannya untuk anda secara automatik apabila mencipta julat bernama. Jika tidak, pastikan anda memasukkan nama helaian diikuti dengan tanda seru seperti dalam contoh formula ini.
Sebaik sahaja anda membuat julat bernama dinamik dengan formula OFFSET di atas, anda boleh menggunakan Pengesahan Data untuk membuat senarai lungsur turun dinamik yang akan dikemas kini secara automatik sebaik sahaja anda menambah atau mengalih keluar item daripada senarai sumber.
Untuk panduan langkah demi langkah terperinci tentang membuat senarai lungsur turun dalam Excel, sila lihat tutorial berikut:
- Membuat senarai lungsur turun dalam Excel - statik, dinamik, dari buku kerja lain
- Membuat senarai lungsur turun bergantung
OFFSET Excel & VLOOKUP
Seperti semua orang tahu, carian menegak dan mendatar mudah dilakukan dengan fungsi VLOOKUP atau HLOOKUP, masing-masing. Walau bagaimanapun, fungsi ini mempunyai terlalu banyak had dan sering tersandung dalam formula carian yang lebih berkuasa dan kompleks. Jadi, untuk melakukan carian yang lebih canggih dalam jadual Excel anda, anda perlu mencari alternatif seperti INDEX, MATCH dan OFFSET.
Contoh 1. Formula OFFSET untuk Vlookup kiri dalam Excel
Salah satu batasan paling terkenal bagi fungsi VLOOKUP ialah ketidakupayaan untuk melihat ke kirinya, bermakna VLOOKUP hanya boleh mengembalikan nilai kepadasebelah kanan lajur carian.
Dalam jadual carian sampel kami, terdapat dua lajur - nama bulan (lajur A) dan bonus (lajur B). Jika anda ingin mendapatkan bonus untuk bulan tertentu, formula VLOOKUP mudah ini akan berfungsi tanpa halangan:
=VLOOKUP(B1, A5:B11, 2, FALSE)
Walau bagaimanapun, sebaik sahaja anda menukar lajur dalam jadual carian, ini akan mengakibatkan ralat #N/A serta-merta:
Untuk mengendalikan carian sebelah kiri, anda memerlukan fungsi yang lebih serba boleh yang tidak begitu peduli di mana lajur pulangan berada . Salah satu penyelesaian yang mungkin adalah menggunakan gabungan fungsi INDEX dan MATCH. Pendekatan lain menggunakan OFFSET, MATCH dan ROWS:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( jadual_carian ), 1) ,0) -1, return_col_offset , 1, 1)Di mana:
- Lookup_col_offset - ialah bilangan lajur untuk dialihkan dari titik permulaan ke lajur carian.
- Return_col_offset - ialah bilangan lajur untuk dialihkan dari titik permulaan ke kembali kolum.
Dalam contoh kami, jadual carian ialah A5:B9 dan nilai carian adalah dalam sel B1, lajur carian mengimbangi 1 (kerana kami sedang mencari nilai carian dalam lajur kedua (B ), kita perlu mengalihkan 1 lajur ke kanan dari permulaan jadual), mengimbangi lajur pulangan ialah 0 kerana kita mengembalikan nilai dari yang pertama