Adakah yang tahu rumus untuk menemukan nilai sel tidak kosong terakhir di kolom, di Microsoft Excel?
excel
worksheet-function
MichaelS
sumber
sumber
Jawaban:
Ini bekerja dengan teks dan angka dan tidak peduli jika ada sel kosong, yaitu, ini akan mengembalikan sel tidak kosong terakhir.
Ini harus dimasukkan dalam array , artinya Anda menekan Ctrl-Shift-Enter setelah Anda mengetik atau menempelkannya. Di bawah ini untuk kolom A:
sumber
CELL()
atauOFFSET()
), sedangkan yang lebih disukai mengembalikan nilai tanpa memberi tahu Anda di mana tempatnya.Menggunakan rumus sederhana berikut jauh lebih cepat
Untuk Excel 2003:
Ini memberi Anda keuntungan sebagai berikut:
Penjelasan:
(A:A<>"")
mengembalikan array{TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
memodifikasi larik ini menjadi{1,1,..,#DIV/0!,..}
.LOOKUP
mengharapkan array yang diurutkan dalam urutan menaik , dan dengan mempertimbangkan bahwa jikaLOOKUP
fungsi tidak dapat menemukan kecocokan yang tepat, ia memilih nilai terbesar dalamlookup_range
(dalam kasus kami{1,1,..,#DIV/0!,..}
) yang kurang dari atau sama dengan nilai (dalam kasus kami2
), rumus menemukan terakhir1
dalam larik dan mengembalikan nilai yang sesuai dariresult_range
(parameter ketiga -A:A
).Juga sedikit catatan - rumus di atas tidak memperhitungkan sel dengan kesalahan (Anda dapat melihatnya hanya jika sel yang tidak kosong terakhir memiliki kesalahan). Jika Anda ingin mempertimbangkannya, gunakan:
Gambar di bawah ini menunjukkan perbedaannya:
sumber
LOOKUP
mengatakan bahwa argumen terakhirresult_vector
adalah opsional. Namun jika saya menghilangkannya, saya mendapatkan hasil yang sangat aneh yang tidak saya mengerti.LOOKUP
fungsi tidak dapat menemukanlookup_value
, fungsi cocok dengan nilai terbesarlookup_vector
yang kurang dari atau sama denganlookup_value.
" Jika saya menggunakan=LOOKUP(2,A:A<>"",A:A)
tanpa menghasilkan#DIV/0!
kesalahan oleh1/...
, tampaknya ia mengembalikan beberapa nilai di tengah vektor. Saya belum menemukan apa fungsi sebenarnya dalam kasus ini.=LOOKUP(2,1/(A:A<>""),ROW(A:A))
tetapi menambahkanROW
fungsi akan menambahkan efek "volatilitas" - rumus akan dihitung ulang setiap kali sel di lembar kerja berubahIni opsi lain:
=OFFSET($A$1;COUNTA(A:A)-1;0)
sumber
COUNTA
sebagai penggantiCOUNT
). Belum lagi sel kosong.Terinspirasi oleh petunjuk luar biasa yang diberikan oleh jawaban Doug Glancy, saya menemukan cara untuk melakukan hal yang sama tanpa memerlukan rumus array. Jangan tanya saya mengapa, tapi saya ingin menghindari penggunaan rumus array jika memungkinkan (bukan karena alasan tertentu, itu hanya gaya saya).
Ini dia:
Untuk mencari baris terakhir yang tidak kosong menggunakan Kolom A sebagai kolom referensi
Untuk mencari kolom tidak kosong terakhir menggunakan baris 1 sebagai baris referensi
Ini dapat digunakan lebih lanjut dalam hubungannya dengan fungsi indeks untuk secara efisien mendefinisikan rentang bernama dinamis, tetapi ini adalah sesuatu untuk posting lain karena ini tidak terkait dengan pertanyaan langsung yang dibahas di sini.
Saya telah menguji metode di atas dengan Excel 2010, baik "native" dan dalam "Compatibility Mode" (untuk versi Excel yang lebih lama) dan berhasil. Sekali lagi, dengan ini Anda tidak perlu melakukan Ctrl + Shift + Enter. Dengan memanfaatkan cara kerja sumproduct di Excel, kita dapat membantu kebutuhan untuk menjalankan operasi array tetapi kita melakukannya tanpa formula-array. Saya berharap seseorang di luar sana dapat menghargai keindahan, kesederhanaan, dan keanggunan solusi produk yang diusulkan ini sama seperti saya. Saya tidak membuktikan efisiensi memori dari solusi di atas. Hanya saja mereka sederhana, terlihat cantik, membantu tujuan yang dimaksudkan dan cukup fleksibel untuk memperluas penggunaannya untuk tujuan lain :)
Semoga ini membantu!
Semua yang terbaik!
sumber
Saya tahu pertanyaan ini sudah tua, tetapi saya tidak puas dengan jawaban yang diberikan.
LOOKUP, VLOOKUP dan HLOOKUP memiliki masalah kinerja dan tidak boleh digunakan.
Fungsi array memiliki banyak overhead dan juga dapat memiliki masalah performa, jadi sebaiknya hanya digunakan sebagai pilihan terakhir.
HITUNGAN dan COUNTA mengalami masalah jika datanya tidak secara berdekatan tidak kosong, yaitu Anda memiliki spasi kosong dan kemudian data lagi dalam kisaran yang dimaksud
TIDAK LANGSUNG mudah menguap sehingga hanya digunakan sebagai upaya terakhir
OFFSET mudah berubah sehingga hanya digunakan sebagai pilihan terakhir
referensi apa pun ke baris atau kolom terakhir yang memungkinkan (baris ke 65536 di Excel 2003, misalnya) tidak kuat dan menghasilkan overhead tambahan
Ini yang saya gunakan
ketika tipe datanya dicampur:
=max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
ketika diketahui bahwa datanya hanya berisi angka:
=MATCH(1E+306,[RANGE],1)
ketika diketahui bahwa data hanya berisi teks:
=MATCH("*",[RANGE],-1)
MATCH memiliki overhead terendah dan non-volatile, jadi jika Anda bekerja dengan banyak data, ini yang terbaik untuk digunakan.
sumber
TRUE
/FALSE
), mereka tidak akan terdeteksi. Terlepas dari kenyataan bahwa jawaban ini tidak antipeluru, menurut saya jawaban ini memiliki dampak paling kecil pada kinerja.=INDEX(N:N,MATCH(1E+306,N:N,1))
Ini berfungsi di Excel 2003 (& lebih baru dengan suntingan kecil, lihat di bawah). Tekan Ctrl + Shift + Enter (bukan hanya Enter) untuk memasukkan ini sebagai rumus array.
Sadarilah bahwa Excel 2003 tidak dapat menerapkan rumus array ke seluruh kolom. Melakukannya akan menghasilkan
#NUM!
; hasil yang tidak dapat diprediksi mungkin terjadi! (EDIT : Informasi yang bertentangan dari Microsoft: Hal yang sama mungkin atau mungkin tidak benar tentang Excel 2007; masalah mungkin telah diperbaiki pada tahun 2010. )Itu sebabnya saya menerapkan rumus array ke range
A1:A65535
dan memberikan perlakuan khusus pada sel terakhir, yaituA65536
di Excel 2003. Tidak bisa hanya mengatakanA:A
atau bahkanA1:A65536
saat yang terakhir secara otomatis kembali keA:A
.Jika Anda benar-benar yakin
A65536
kosong, Anda dapat melewatiIF
bagian ini:Perhatikan bahwa jika Anda menggunakan Excel 2007 atau 2010, nomor baris terakhir adalah 1048576 bukan 65536, jadi sesuaikan di atas sebagaimana mestinya.
Jika tidak ada sel kosong di tengah data Anda, saya hanya akan menggunakan rumus yang lebih sederhana
=INDEX(A:A,COUNTA(A:A))
,.sumber
=INDEX(19:19,COUNTA(19:19))
Solusi alternatif tanpa rumus array, mungkin lebih kuat daripada jawaban sebelumnya dengan solusi (petunjuk ke a) tanpa rumus array , adalah
Lihat jawaban ini sebagai contoh. Kudos to Brad dan barry houdini , yang membantu menjawab pertanyaan ini .
Kemungkinan alasan untuk memilih rumus non-larik diberikan dalam:
Halaman resmi Microsoft (cari "Kerugian menggunakan rumus array").
Rumus array mungkin tampak ajaib, tetapi mereka juga memiliki beberapa kelemahan:
Array Formula Sesat .
sumber
A
kejadian dengan aD
. Apa yang saya lakukan salah?Jika Anda mencari di Kolom (A) gunakan:
jika rentang Anda adalah A1: A10, Anda dapat menggunakan:
dalam rumus ini:
mengembalikan nomor baris terakhir yang tidak kosong, dan tidak langsung () mengembalikan nilai sel.
sumber
=INDEX(A:A, COUNTA(A:A), 1)
diambil dari sinisumber
=MATCH("*";A1:A10;-1)
untuk data tekstual=MATCH(0;A1:A10;-1)
untuk data numeriksumber
Saya sudah mencoba semua versi non-volatile tetapi Tidak satu pun versi yang diberikan di atas berhasil .. excel 2003 / 2007update. Tentunya ini bisa dilakukan di excel 2003. Bukan sebagai array atau rumus standar. Saya hanya mendapatkan kesalahan kosong, 0 atau #value. Jadi saya menggunakan metode volatile .. Ini berhasil ..
@Julian Kroné .. Menggunakan ";" bukannya "," TIDAK berfungsi! Saya pikir Anda menggunakan Libre Office bukan MS excel? LOOKUP sangat menjengkelkan sehingga saya menggunakannya hanya sebagai upaya terakhir
sumber
Tempatkan kode ini dalam modul VBA. Menyimpan. Di bawah fungsi, Pencarian yang ditentukan pengguna untuk fungsi ini.
sumber
untuk data tekstual:
untuk data numerik:
Ini memberi Anda indeks relatif dari sel tidak kosong terakhir dalam kisaran yang dipilih (di sini A1: A10).
Jika Anda ingin mendapatkan nilainya, akses melalui INDIRECT setelah membangun -tekstual- referensi sel absolut, misalnya:
sumber
Saya juga memiliki masalah yang sama. Formula ini juga bekerja dengan baik: -
14 adalah nomor baris dari baris pertama dalam baris yang ingin Anda hitung.
Gigi Cakar Kronis
sumber
Saya menggunakan HLOOKUP
A1
berkencan;A2:A8
memiliki prakiraan yang ditangkap pada waktu yang berbeda, saya ingin yang terbaruIni menggunakan rumus hlookup standar dengan array pencarian yang ditentukan oleh jumlah entri.
sumber
Jika Anda tahu bahwa tidak akan ada sel kosong di antaranya, cara tercepat adalah ini.
Ini hanya menghitung sel yang tidak kosong dan merujuk ke sel yang sesuai.
Ini juga dapat digunakan untuk rentang tertentu.
Ini mengembalikan sel tidak kosong terakhir dalam rentang O4: O34.
sumber
Untuk Microsoft office 2013
"Terakhir tapi satu" dari baris yang tidak kosong:
Baris "terakhir" tidak kosong:
sumber
Formula ini bekerja dengan saya untuk kantor 2010:
= LOOKUP (2; 1 / (A1: A100 <> ""); A1: A100)
A1: sel pertama A100: merujuk ke sel terakhir dalam perbandingan
sumber
Saya pikir tanggapan dari W5ALIVE paling dekat dengan apa yang saya gunakan untuk menemukan baris terakhir data dalam kolom. Dengan asumsi saya mencari baris terakhir dengan data di Kolom A, saya akan menggunakan yang berikut ini untuk pencarian yang lebih umum:
MATCH pertama akan menemukan sel teks terakhir dan MATCH kedua menemukan sel numerik terakhir. Fungsi IFERROR mengembalikan nol jika MATCH pertama menemukan semua sel numerik atau jika kecocokan kedua menemukan semua sel teks.
Pada dasarnya ini adalah variasi kecil dari teks campuran dan solusi angka W5ALIVE.
Dalam menguji waktu, ini secara signifikan lebih cepat daripada variasi LOOKUP yang setara.
Untuk mengembalikan nilai sebenarnya dari sel terakhir itu, saya lebih suka menggunakan referensi sel tidak langsung seperti ini:
Metode yang ditawarkan oleh sancho.s mungkin merupakan opsi yang lebih bersih, tetapi saya akan mengubah bagian yang menemukan nomor baris menjadi ini:
satu-satunya perbedaan adalah bahwa ", 1" mengembalikan nilai pertama sedangkan ", 0" mengembalikan seluruh larik nilai (semua kecuali satu tidak diperlukan). Saya masih cenderung lebih suka mengarahkan sel ke fungsi indeks di sana, dengan kata lain, mengembalikan nilai sel dengan:
Benang bagus!
sumber
Jika Anda tidak takut menggunakan array, maka berikut ini adalah rumus yang sangat sederhana untuk menyelesaikan masalah tersebut:
= SUM (IF (A: A <> "", 1,0))
Anda harus menekan CTRL + SHIFT + ENTER karena ini adalah rumus array.
sumber
Yang sederhana yang berhasil untuk saya:
sumber
Oke, jadi saya memiliki masalah yang sama dengan penanya, dan mencoba kedua jawaban teratas. Tetapi hanya mendapatkan kesalahan rumus. Ternyata saya perlu menukar "," menjadi ";" agar rumus bekerja. Saya menggunakan XL 2007.
Contoh:
atau
sumber
Untuk pelacakan versi (menambahkan huruf v ke awal angka), saya menemukan yang ini berfungsi dengan baik di Xcelsius (SAP Dashboards)
sumber