Saya punya data dalam semacam tata letak pohon direktori (Lihat gambar)
Pada dasarnya saya ingin menggunakan satu kode pencarian sebagai titik referensi dan minta excel melihat ke atas di kolom masing-masing untuk menampilkan "direktori induk".
Saat ini saya memiliki indeks yang memberi tahu saya kode apa itu, tapi saya ingin menyiapkan alat pencarian (Lihat tabel di bawah pada gambar di bawah) yang menunjukkan semua level sekaligus. Pada gambar saya memasukkan nilai yang ingin saya kembalikan menggunakan rumus.
Jadi jika saya memasukkan kode level 4, saya ingin menggunakan rumus yang akan mengembalikan program level 4, 3, 2, dan 1. Untuk kode level 3, saya ingin mencari untuk mengembalikan program level 3, 2, dan 1.
Ada 10.000 baris data.
Tampaknya sangat sederhana bagi saya .... Mulai pada baris ini dan lihat ke atas di kolom ini sampai Anda mencapai nilai ..... Tapi sepertinya itu tidak begitu sederhana.
Bantuan / tips akan sangat dihargai!
-Alex
=MAX(IF(NOT(ISBLANK(OFFSET(A2,,,MATCH(H2,D2:D6,0)))),ROW(A2:A6),""))
. Dengan asumsi data dalam A1: F6, mengembalikan baris sel non-kosong pertama di kolom A, mencari dari kode yang dimasukkan dalam H2. Saya kemungkinan besar dapat mengirim jawaban yang lebih lengkap besok.Jawaban:
Seperti yang Anda perhatikan, Excel tidak mendukung "melihat ke atas." Fungsi suka
index()
atauvlookup()
bagus untuk menemukan pertandingan pertama , tetapi bukan yang terakhir .Dengan asumsi data Anda ada di sel A1: F10, rumus ini menemukan sel non-kosong terakhir di kolom A, mulai dari kode (kolom D) yang dimasukkan dalam sel H2. Itu dapat diisi ulang secara otomatis (untuk menemukan kolom Anda yang lain) dan ke bawah (untuk mencari kode lainnya). Ini adalah formula array dan harus dikonfirmasi dengan ctrl + shift + enter.
OFFSET(A$2,,,MATCH($H2,$D$2:$D$10,0))
digunakan untuk secara dinamis mengukur array pencarian sehingga dimulai pada A2, dan berakhir pada baris di mana kode yang diinginkan ditemukan. Jadi jika kode Anda terletak di D5, bagian ini kembaliA2:A5
MAX(IF(NOT(ISBLANK(...)),ROW(...),""))
Ini mengembalikan nomor baris sel non-kosong tertinggi dalam rentang yang kami temukan sebelumnya.INDEX(A$2:A$10,...-1)
dan akhirnya,index()
menemukan nilai sebenarnya dari sel yang kami temukan. Kami kurangi satu karena rentang pencarian dimulai pada baris 2, sedangkan jumlah baris yang kami gunakan, jelas, dimulai pada 1.sumber