Apakah mungkin mendapatkan sheetname?

12

Bagaimana saya bisa mendapatkan nama sheet dalam sel? (Saya memiliki lebih dari satu lembar, saya ingin mendapatkan arus di setiap lembar)

BrunoLM
sumber

Jawaban:

7

Microsoft menjelaskan Anda mungkin perlu menggunakan rumus array untuk mendapatkan nama sheet:

Untuk menampilkan nama lembar kerja saat ini, ketikkan rumus berikut ini sebagai rumus larik

=RIGHT(CELL("filename"),LEN(CELL("filename"))-
  MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"),
  ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))

di mana "nama file" secara harfiah kata "nama file", dalam tanda kutip.

CATATAN: Anda harus memasukkan rumus ini sebagai rumus larik. Untuk memasukkan rumus sebagai rumus array, tekan CTRL + SHIFT + ENTER.

Perhatikan juga bahwa ini sangat tergantung platform. Pada Mac, Anda akan memerlukan rumus yang berbeda , karena menggunakan pemisah jalur yang berbeda. Juga, ini mungkin bekerja secara berbeda di OpenOffice.org dan alternatif lain. Dan saat menggunakan pada buku kerja yang belum disimpan, Anda mungkin mendapatkan #VALUE!sebagai gantinya.

Saat tidak menggunakan rumus array, Anda mungkin mendapatkan nama buku kerja (bagian terakhir dari nama file-nya), seperti:

Untuk mengembalikan nama buku kerja saja, seperti yang digunakan dalam rumus berikut:

=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,
  SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Arjan
sumber
7

Ini rumusnya.

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)

( Tautan ke info lebih lanjut )

FlashDark
sumber
Perhatikan bahwa referensi ke "A1" tidak diperlukan. Juga, perhatikan bahwa ini bukan platform independen, dan bahwa rumus mungkin tetap kosong sampai Anda menyimpan buku kerja. Lihat juga support.microsoft.com/kb/323225
Arjan
Jika saya letakkan ini di dua lembar kerja itu akan memiliki nama yang sama di keduanya. Itu tidak mendapatkan lembar kerja saat ini di mana sel berada. Ia mendapat lembar kerja saat ini saya melihat dan mereplikasi nilai pada semua bidang lain di semua lembar kerja lainnya.
BrunoLM
2

Pertama-tama simpan file Anda daripada memasukkan formula ini di mana saja

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ahtasham Khan
sumber
+ Ini berfungsi dan pendek. Di samping catatan: Di Jerman menggunakan Excel=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda
Dalam kasus saya, saya perlu menggunakan ;alih-alih ,ketika memisahkan elemen fungsi
WoJ
0

Diuji dan bekerja pada M $ EXCEL dan LibreOffice CALC (Formula dalam bahasa Spanyol):

=EXTRAEB(CELDA("filename");SI(ESERROR(1+HALLAR("]";CELDA("filename")));SI(ESERROR(3+HALLAR("'#$";CELDA("filename")));0;3+HALLAR("'#$";CELDA("filename")));1+HALLAR("]";CELDA("filename")));LARGO(CELDA("filename")))

Catatan: Ini adalah satu formula besar yang cocok di dalam formula lain atau hanya menggunakan satu sel.

Saya pikir dalam bahasa Inggris: EXTRAEB akan menjadi MIDB, CELDA akan menjadi CELL, SI akan menjadi JIKA, ESERROR akan menjadi ISERROR, HALLAR akan MENCARI dan, LARGO akan menjadi PANJANG.

Jauh lebih baik jika Anda membagi formula besar tersebut menjadi beberapa sel (untuk menghindari memanggil beberapa kali yang sama):

  1. =CELDA("filename")
  2. =1+HALLAR("]";<CellReferenceFor_1>)
  3. =3+HALLAR("'#$";<CellReferenceFor_1>)
  4. =ESERROR(<CellReferenceFor_2>;)
  5. =ESERROR(<CellReferenceFor_3>;)
  6. =EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))

Kenapa mendapatkan nama sheet sangat rumit, sementara mendapatkan posisi sheet pada daftar sheet begitu mudah di spreadsheet modern (peringatan, pada EXCEL 2000 yang satu ini tidak ada): =HOJA(A1)

Dan satu hal lagi: mengapa fungsi-fungsi dipanggil berbeda pada setiap bahasa, bagaimana jika saya punya M $ EXCEL adalah bahasa Spanyol dan CALC dalam bahasa Inggris (belum lagi bahasa Rusia, Chinesse, dll)? kerja keras, perlu mengingat semua nama fungsi pada idiom yang berlipat ganda.

Secara internal mereka disimpan dengan nama-nama tertentu, misalnya =SHEET(A1)yang sama seperti =HOJA(A1)disimpan sebagai =_xlfn.SHEET(A1); mengapa tidak digunakan pada semua idiom yang terakhir?

Atau mengatakan dalam bentuk lain: mengapa jika saya menaruhnya dalam bahasa Inggris itu mengatakan itu bukan nama fungsi vaild (jika CALC / M $ EXCEL tidak menggunakan bahasa Inggris)?

Dengan M $ ACCESS dan fungsi SQL yang tidak terjadi, pada versi Spanyol saya bisa mengetiknya dalam bahasa Spanyol ESNULO()dan bahasa Inggris ISNULL()dan dibutuhkan dengan benar.

Jika terlalu rumit untuk menerima keduanya; baik, maka hanya menerima satu, jangan melokalkan ke idom!

Nah, terus mempertanyakan, trik yang saya gunakan pada formula besar itu adalah untuk menguji apakah ]ada (M $ EXCEL), tes lain jika ada '#$(LibreOffice CALC) saat mengekstraksi nama dari =CELL("filename"). Ini sangat aneh!

Lagi dengan pertanyaan sarkastik: Mengapa mereka menambahkan =SHEET(A1)dan tidak =SHEETNAME(A1)? Itu membuat kita semua bekerja lebih keras!

claudio
sumber
-1

Di LibreOffice, saya telah mencampur formula Anda menjadi yang berikut, dan angka 20 menjelang akhir akan menjadi batas karakter yang akan ditampilkan:

= (SUBSTITUTE (MID ((KANAN (CELL ("nama file"))), LEN (CELL ("nama file")))) - MAX (JIKA (BUKAN (ISERR (SEARCH ("\", CELL ("nama file"), ROW (1 : 255: 255)))), SEARCH ("\", CELL ("nama file"), ROW (1: 255: 255)))))), FIND ("# $", (KANAN (CELL ("nama file) "), LEN (CELL (" filename ")) - MAX (JIKA (BUKAN (ISERR (SEARCH (" \ ", CELL (" nama file "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255)))))))) 2,20), 1,1))

Carlos
sumber
1
Ini untuk MS Excel.
James Mertz