Pertanyaan Tidak yakin cara mempersingkat rumus


Saya membuat rumus ini:

=IF(B8="Jan","Feb",IF(B8="Feb","Mar",IF(B8="Mar","Apr",IF(B8="Apr","May",IF(B8="May","Jun",IF(B8="Jun","Jul",IF(B8="Jul","Aug",IF(B8="Aug","Sep",IF(B8="Sep","Oct",IF(B8="Oct","Nov",IF(B8="Nov","Dec",IF(B8="Dec","Jan"))))))))))))

sehingga ketika pengguna memilih bulan singkatan maka sel berikutnya memiliki bulan berturut-turut IE: pengguna masuk Oktober, sel berikutnya menjadi November.

Namun saya menemukan menggunakan jenis rumus ini kikuk, panjang, dan dalam jangka panjang akan memperlambat dokumen saya.

Jika Anda punya ide atau tahu cara mengurangi formula ini yang akan sangat dihargai.


4
2018-05-31 12:19


asal




Jawaban:


Anda dapat menggunakan EOMONTH, yang memungkinkan bulan diimbangi dengan kriteria kedua:

=TEXT(EOMONTH(B8 & " 1",1),"mmm")

Itu B8 & " 1" membuat string yang dapat ditafsirkan oleh Excel sebagai tanggal.

Itu EOMONTH(...,1) mengembalikan hari terakhir bulan berikutnya.

Itu TEXT(...,"mmm") format tanggal yang hanya sebagai nama bulan yang disingkat.

enter image description here


5
2018-05-31 14:13



tidak pernah menggunakan EOMONTH sebelumnya, jawaban yang bagus! - PeterH


Cobalah salah satu dari: (yang pertama adalah jawaban saya yang ditingkatkan dalam terang jawaban PeterH, yang kedua adalah jawaban asli saya)

=TEXT(DATE(2000, MONTH(1 & B8) + 1, 1), "mmm")
=TEXT(DATE(2000, MONTH(DATEVALUE(B8 & " 1")) + 1, 1), "mmm")

Ini secara otomatis menangani rollover dari 12 + 1 = 13 untuk 1 (diartikan sebagai bulan pertama di tahun berikutnya).

step-by-step


Itu DATEVALUE() fungsi akan mengambil tanggal tekstual, dan mengembalikan tanggal "nomor seri". Dalam kasus kami yang kami gunakan DATEVALUE(B8 & " 1")... tapi kenapa?

Cukup menggunakan DATEVALUE("Jan") akan gagal dengan #VALUE! kesalahan.

Untuk mengatasi hal ini, kita akan membahas tentang " 1" untuk membuatnya DATEVALUE("Jan 1"), yang Excel dengan senang mengartikan sebagai "1 Jan 2001" - untungnya kita tidak peduli dengan tahun ini.

YEAR(DATEVALUE("Jan 1")) == 2001

Sesuai jawaban PeterH, MONTH(DATEVALUE(B8 & " 1")) dapat disederhanakan menjadi adil MONTH(1 & B8), juga ditunjukkan di atas.

Sini 1 & B8 memutuskan untuk 1Jan, yang Excel parsing dengan senang hati.


3
2018-05-31 12:33



Ini bekerja dengan sempurna, terima kasih! Tapi, apakah Anda keberatan menjelaskan kepada saya bagian tanggal (B8 & "1"). - polarbearmike
Tentu lihat pembaruan saya. - Attie


Pilihan lain akan digunakan CHOOSE:

=CHOOSE(MATCH(B8,{"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"},0),"FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","JAN")

Atau menyederhanakan lebih jauh lagi yang bisa Anda gunakan MONTH untuk menghitung nomor bulan mana di B8, kemudian gunakan ini sebagai nilai indeks dalam CHOOSE:

=CHOOSE(MONTH(1&LEFT(B8,3)),"FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","JAN")

2
2018-05-31 12:49





Dengan pendekatan berbeda saya ingin menyarankan Anda bahwa bagaimana nama Bulan dapat bersepeda di sel yang berdekatan.

Periksa Tangkapan Layar:

enter image description here

Ikuti langkah ini:

: Diedit:

  • Buat daftar bulan menggunakan hanya tiga karakter, seperti yang saya buat  Kolom A.
  • Pilih daftar bulan di Kolom A & beri nama Range, nama yang diberikan adalah, MnthName.
  • Di Sel D91 berlaku Validasi data, di bawah "Pengaturan Tab" pilih "Daftar" dan di "Sumber" tulis Rentang Bernama, MnthName.
  • Dalam Sel F91 tulis Rumus ini:
    =TEXT(DATE(2018,MATCH($D$91,MnthName,0)+COLUMNS($F$91:F91),1),"mmm").

  • Pilih nama bulan dari daftar Turun, di Sel F91 yang Anda temukan nama ngengat berikutnya.

N.B. 

  • Sesuaikan alamat Sel sesuai kebutuhan Anda.

-2
2018-06-02 18:35



Pertanyaan menyatakan bahwa nilai input referensi, "A", adalah singkatan tiga huruf setiap bulan, dan nilai output yang diinginkan, "B", adalah singkatan tiga huruf pada bulan berikutnya. Jadi jawaban yang responsif harus dimulai dengan "A" dan menghasilkan "B". Mungkin Anda bisa menggunakan metode yang berkaitan dengan apa yang dijelaskan di sini untuk melakukan itu, tetapi saya tidak melihat apa pun yang dimulai dengan "A" dan menghasilkan "B". Itu juga tidak jelas apa LstMonthmengacu pada, atau apa rumus dalam F91 yang seharusnya dilakukan atau mengapa Anda mengkode seperti itu. (lanjutan) - fixer1234
Dan bagaimana Anda mengukur skala ini ke buku kerja yang penuh dengan nilai-nilai sumber? Dapatkah Anda merevisi jawaban untuk secara langsung menjawab persyaratan dalam pertanyaan dan menjelaskan apa yang dilakukan kode? Juga, jika Anda akan menangani ini sebagai pencarian, mengapa Anda tidak bisa menggunakan INDEX & MATCH di satu tabel pencarian? - fixer1234
@ fixer1234, biarkan saya bekerja di sekitarnya, & biarkan saya hanya merujuk jawaban lain, segera saya akan kembali ke masalah ini. - Rajesh S
@ fixer1234, sekarang saya telah mengedit jawaban dan mengganti nama Full Moth di kolom A dengan 3 karakter Jan, feb (singkatan). Saya merasa bahwa INDEX & MATCH bukanlah kombinasi yang tepat. Karena dalam sel yang berdekatan, nama ngengat berikutnya diharapkan sehingga rumus DATE paling cocok dalam situasi ini. ** Kontra ,,,, ** - Rajesh S
Karena formula yang saya gunakan bukanlah mur yang keras untuk dipecahkan dan untuk menghindari jawaban panjang, saya tidak perlu menjelaskannya di sana. Tapi izinkan saya mengatakan dengan tepat, rumus dasar DATE (2018 ,,,,,) mengembalikan tanggal pertama ngengat seperti untuk September di D91 itu mengembalikan 01/10/2018 di F91. Dengan Tanggal tahun "2018"Menentukan tahun. Bagian yang lain + COLUMNS ($ F $ 91: F91) mengembalikan +1 yang menambahkan 1 hingga Bulan dan akhirnya melengkung dengan TEXT untuk mendapatkan nama bulan di 3 penyewa. Rumus ini harus ditulis seperti ini juga ,,, = TEKS (DATE (2018, MATCH ($ D $ 91, MnthName, 0) +1,1), "mmm"). - Rajesh S