Saat ini saya memilikinya di Sel A1:
"timeZone": "Etc / UTC"}, "body": "[~ kevin.tom] [~ sergio.Melle] [~ seema.item] Apakah laporan dikirim ke klien?", "updateAuthor": "body ":" [~ katelyn.robert] \ r \ n \ r \ n Belum "," updateAuthor ":
Dan saya ingin mengekstraksi semuanya
"tubuh":"
dan
"," perbarui Pengarang
Seperti yang Anda lihat di A1, jika saya membagi konten antara "body": "dan", "updateAuthor kami memiliki dua hasil:
[~ kevin.tom] [~ sergio.Melle] [~ seema.item] Apakah laporan dikirimkan ke klien?
dan
[~ katelyn.robert] \ r \ n \ r \ nTidak "," updateAuthor
Saya ingin dapat mengekstraksi hasil terakhir, yaitu
[~ katelyn.robert] \ r \ n \ r \ nTidak "," updateAuthor
Saya akan selalu menambahkan lebih banyak ke sel A1 dan saya perlu Sel B1 untuk memperbarui dan menarik hasil terakhir, apa pun itu.
Saat ini, saya dapat membuat kode ini di Sel B1:
= MID (B1, FIND ("body", B1) +7, FIND ("updateAuthor", B1, FIND ("body", B1) +1) -CARI ("body", B1) -10)
Ini bekerja untuk saya tetapi mengekstrak hasil pertama yang ditemukannya sedangkan saya ingin hasil dari kejadian terakhir. Pada dasarnya, excel mencari dari Kiri ke Kanan ketika saya ingin mencari dari Kanan ke Kiri. Adakah yang tahu cara memodifikasi ini untuk membuatnya berfungsi?
Saat ini, dengan kode saya di B1, saya mendapatkan ini di B1:
[~ kevin.tom] [~ sergio.Melle] [~ seema.item] Apakah laporan dikirimkan ke klien?
Tetapi saya menginginkan ini:
[~ katelyn.robert] \ r \ n \ r \ n Belum
Saya mencoba menyelesaikan ini tanpa menggunakan VBA
sumber
B1
yang mereferensikanB1
. Saya kira Anda memiliki rumus di CellB1
yang merujukA1
(atau sebaliknya). Tolong jangan menanggapi dalam komentar; edit pertanyaan Anda untuk membuatnya lebih jelas dan lebih lengkap."body":"
?"body":"
dan","updateAuthor
Jadi untuk menjawab pertanyaan Anda, ya, akan ada banyak"body":"
("body":")(.+?)(","updateAuthor":$)
. Info lebih lanjut tentang cara melakukannya di siniJawaban:
OK, saya hanya ingin menunjukkan bahwa saya benar-benar percaya ini akan lebih mudah untuk diketahui dengan VBA, tapi saya cukup penasaran untuk melakukannya sebagai formula.
Ini mengasumsikan bahwa Anda dapat menggunakan "tubuh" dan "pembaruanAuthor" seperti yang Anda lakukan dalam rumus yang Anda berikan. Jika Anda benar-benar ingin mencari string karakter dengan simbol tanda baca, seperti
"body"."
maka temuan akan membutuhkan sesuatu sepertiCHAR(34) & "body" & CHAR(34) & ":" & CHAR(34)
danCHAR(34) & "," & CHAR(34) & "updateAuthor"
. Jika Anda melakukannya, Anda juga harus mengubah angka ofset yang ditambahkan (+7 dan +10).Ini juga mengasumsikan bahwa ada dua, dan hanya dua, penulis dalam sel. Pendekatan ini tidak akan berfungsi jika Anda memiliki sejumlah variabel penulis.
Sintaks untuk fungsi Mid adalah
MID(text,start_num,num_chars)
.Sintaks untuk fungsi Temukan adalah
FIND(find_text,within_text,start_num)
.Ini memberi Anda nomor awal untuk fungsi Mid.
Temuan di dalam
FIND("body",A1,1)
mengembalikan lokasi kemunculan pertama "tubuh" di A1. Anda perlu menambahkan 1 untuk itu untuk nomor awal dari pencarian berikutnya atau Anda hanya akan mendapatkan lokasi yang sama. Temuan luar kemudian melihat A1 lagi untuk "tubuh", tetapi mulai mencari satu karakter setelah lokasi kejadian pertama. Anda harus menambahkan offset untuk menemukan lokasi karakter pertama setelah Anda"body":"
karena fungsi find akan memberi tahu Anda di mana karakter itub
berada.Ini memberi Anda jumlah karakter untuk fungsi Pertengahan.
Pernyataan pencarian rekursif ini bekerja sama seperti di atas untuk menemukan perbedaan antara awal informasi penulis dan awal tag akhir
","updateAuthor
,, dengan offset yang sesuai ditambahkan di akhir.sumber
Jika Anda mempertimbangkan kembali dan akan menerima VBA, maka pertimbangkan Fungsi Buatan Pengguna berikut:
sumber