Array seperti sintaks di MS Excel

0

Bagaimana saya bisa memilih sel menggunakan subskrip seperti di kebanyakan bahasa pemrograman - a [x]?

Yaitu, saya tidak tahu data baris mana yang saya inginkan tetapi saya tahu kolomnya. Hal semacam ini mungkin dapat berguna dalam rumus validasi seperti berikut

= IF(A[row()] = "X", TRUE, FALSE) 
Holysmoke
sumber

Jawaban:

2

Menggunakan TIDAK LANGSUNG fungsi:

= TIDAK LANGSUNG ("A" & amp; C2)

jika C2 adalah sel yang berisi nomor baris.

Anda dapat menggunakan ini dalam rumus IF Anda:

= IF(INDIRECT("A"&C2) = "X"; TRUE; FALSE)
Snark
sumber
Terima kasih penunjuknya ke INDIRECT. Jawabannya, dalam hal ini, mungkin akan = JIKA (TIDAK LANGSUNG (ALAMAT (ROW (), 1)) = "X"; BENAR; SALAH;
Holysmoke
2

Saya setuju, INDEX jelas merupakan jawaban yang lebih baik untuk ini daripada INDIRECT, sebenarnya itu adalah hal yang paling dekat dengan pemilih elemen array yang ada di Excel. (NB: tidak ada elemen nol karena ada dalam banyak bahasa pemrograman, Excel bekerja pada baris dan kolom, jadi yang pertama selalu 1 di kedua arah)

Perhatikan bahwa Anda dapat menggunakan versi sederhana untuk memilih elemen ke-n dalam array satu kolom:

= INDEX (A1: A100,27) akan memberikan elemen ke-27 dari A1: A100, yaitu A27 atau array satu baris:

= INDEX (A1: G1,, 5) memberikan konten kolom kelima dalam array, jadi E1 dalam hal ini (perhatikan koma ganda untuk tidak menunjukkan nilai untuk baris yang disediakan)

Anda dapat melakukan array dua dimensi:

= INDEX (A1: D100,27,4) akan menjadi konten D27 (baris 27, kolom 4 array) dan

= INDEX (C19: X43,5,7) memberi I23

Sekarang, jika Anda memiliki array dua dimensi dan hanya memberikan satu parameter, hasilnya akan menjadi seluruh kolom atau baris. Meskipun ini tidak masuk akal pada itu sendiri, itu baik-baik saja tertanam dalam fungsi lain. Begitu: = INDEX (A1: C5,1) - mengembalikan kesalahan #REF karena ia bahkan tidak mengerti apakah angka 1 merujuk ke baris atau kolom.

= INDEX (A1: C5,1,) - mengembalikan #VALUE karena tidak dapat menampilkan array yang dihasilkan dalam sel, tetapi perhatikan bahwa koma tambahan tidak secara eksplisit mendefinisikan bahwa 1 berarti baris pertama.

= SUM (INDEX (A1: C5,1,)) - mengembalikan jumlah semua nilai dalam A1: C1, baris pertama array.

Namun, setelah mengatakan semua itu, Anda mungkin tidak perlu secara eksplisit memilih elemen array sama sekali. Tampaknya dari contoh Anda bahwa Anda mencoba menguji nilai di kolom yang diketahui untuk baris yang sama dengan rumus yang dimasukkan. Anda dapat melakukan ini menggunakan implisit persimpangan rentang dan baris saat ini, jadi misalnya, jika Anda memasukkan rumus ini di sel B13:

= JIKA (A: A = "X", "Ya ini berfungsi", "X tidak ditemukan") maka Anda dapat menyalin ini ke baris lain hanya dengan menyeretnya dan pada setiap baris itu secara implisit berarti "elemen kolom A yang berada di nomor baris yang sama dengan rumus ini". Catatan: rentang tidak harus berupa seluruh kolom, bisa berupa A4: A104, atau bahkan pada lembar lain, tetapi dalam setiap kasus akan menggunakan sel di baris Excel aktual yang sama dengan rumus. Saya akan mengatakan itu sedikit lagi: Jika Anda memiliki rumus di sel B5 menggunakan rentang A4: A104 Anda tidak akan mendapatkan elemen kelima dari rentang itu (A8) melainkan sel A5. Jika Anda menggunakan rumus di sel B3 terhadap A4: A104 Anda mendapatkan kesalahan karena rentang tidak memiliki apa pun di baris 3 (tidak ada persimpangan). Jadi, jika baris Anda berbaris, sel implisit dari rentang ini sangat berguna (dan bahkan lebih bersih saat Anda menggunakan rentang bernama untuk kolom), tetapi jika tidak, Anda perlu INDEX untuk mendapatkan replikasi sejati dari [ n] untuk elemen array apa pun.

AdamV
sumber
0

Kamu bisa mencoba

=if(A & trim(text(something that evaluates to a number))="X",true,false)

Saya kira, jika Anda bisa sedikit lebih spesifik dengan bagaimana Anda mendapatkan baris () itu akan sangat membantu.

Col
sumber
0

Jika Anda mengetahui rentang nilai yang digunakan fungsi INDEX.

misalnya

= IF(INDEX(A:A, ROW()) = "X", TRUE, FALSE)

Berbeda dengan fungsi INDIRECT, ia tidak mudah menguap dan karenanya tidak akan dihitung ulang setiap kali ada perubahan.

JDunkerley
sumber
0

Berikut adalah dua opsi lagi untuk Anda:

Aktifkan gaya referensi R1C1

Di Excel 2003 misalnya:

  1. Klik Opsi pada menu Alat, lalu klik tab Umum.
  2. Di bawah Pengaturan, pilih kotak centang gaya referensi R1C1.

Kemudian dalam formula Anda, Anda cukup melakukan ini:

=R1 = "X"

yang secara otomatis akan mengembalikan benar atau salah. Harap perhatikan bahwa dalam rumus Anda, setiap kali Anda menggunakan If () untuk mengembalikan true dan false, Anda bisa menghilangkan If () sepenuhnya karena perbandingan apa pun sudah mengembalikan nilai boolean.

Sayangnya, dengan metode ini, Anda tidak dapat menggunakan gaya referensi A1, jadi trik ini mungkin utilitas terbatas untuk Anda.

Gunakan rentang bernama

Rentang yang dinamai benar-benar kuat, dan mudah digunakan. Katakanlah Anda memberi label pada kolom dengan tanda X di dalamnya. Jadi, Anda akan memilih seluruh kolom dan pilih Sisipkan - & gt; Nama - & gt; Menetapkan. Beri nama Bendera (jika belum ditemukan berdasarkan label Anda) dan kemudian dalam rumus Anda menggunakan kata itu Bendera seolah-olah itu adalah referensi sel, seperti:

=Flag = "X"

Ini akan menggunakan nilai dari baris yang sama, tetapi kolom yang benar.

Selain menentukan nama secara manual, jika Anda ingin menambahkan label ke seluruh rangkaian data sekaligus, pilih rentang data Anda, lalu pilih Sisipkan - & gt; Nama - & gt; Buat, dan pilih posisi label (biasanya Baris teratas untuk saya). Sekarang Anda telah menetapkan rentang bernama untuk setiap kolom di spreadsheet Anda dan Anda bisa mulai menggunakannya dalam formula Anda.

Satu berita gembira lagi

Jangan lewatkan operator intersect, yang merupakan ruang. Operator serikat adalah koma seperti pada =Sum(A1, B1) dan operator intersect juga digunakan seperti ini =Sum(Flag 2:10). Jika rentang bernama Bendera merujuk pada kolom 1 misalnya, maka ini akan membahas kisaran A2: A10, persimpangan dari dua rentang yang terdaftar. Anda dapat menggunakan banyak persimpangan satu demi satu seperti di range range range range. A:A 1:1 memutuskan untuk referensi yang sama dengan A1.

Jika data baris Anda juga diberi label bermakna, seperti di wilayah atau tahun atau nilai lainnya, maka menambahkan rentang bernama dan menggunakan operator intersect dapat melakukan beberapa hal luar biasa, seperti, jika rentang bernama Total Penjualan mengacu pada kolom dengan jumlah penjualan di dalamnya, dan rentang bernama California mengacu pada semua (seluruh) baris dengan data California — tidak harus bersebelahan — dengan rumus =Sum(TotalSales California1) akan menjadi jumlah persimpangan keduanya.

ErikE
sumber