Sorot jika disertakan dalam string ATAU TextToColumn di VBA

0

Saya punya 1 atau 2 pertanyaan, tergantung solusi.

Saya memiliki data seperti 001.1, 003.1, 005.1 ... dalam sel. Lalu saya punya sel dengan data seperti "001.1 | 005.1". Apa yang ingin saya lakukan, jika memungkinkan - saya ingin membandingkan nilai-nilai tunggal ini dengan nilai-nilai yang tidak terpisahkan dan jika beberapa nilai tunggal termasuk dalam string itu, kemudian sorot.

Salah satu solusi yang mungkin (yang bukan yang saya inginkan, karena satu baris nilai tambahan) adalah dengan melakukan Text To Column, dengan separator "|" dan kemudian dengan pemformatan bersyarat membandingkan nilai-nilai tunggal dengan hasil TextToColumn itu.

Pertanyaan saya adalah: Apakah mungkin, entah bagaimana, untuk membandingkan nilai-nilai tunggal (E2 = "001.1" dll.) Secara langsung dengan nilai-nilai yang tidak terpisahkan (E11 = "001.1 | 003.1")? [Ini solusi pilihan saya]

Atau jika TIDAK, bisakah Anda membantu saya menulis fungsi khusus untuk Text To Column di VBA?

Ini gambar dari apa yang saya miliki.

picture

E2: E7 = nilai tunggal
E11 = string tidak terpisahkan
G11, H11, I11 = hasil Text To Column
jendela di sebelah kanan = pemformatan bersyarat dengan rumus khusus "= OR (E2 = $ G $ 11: $ I $ 11)" untuk membandingkan E2: E7 dengan G11: I11

Terima kasih banyak.

Roman Žydyk
sumber
Saya agak bingung dengan contoh Anda. Apakah Anda memiliki nilai tunggal dan gabungan dalam satu kolom? Di mana nilai yang Anda bandingkan dan apakah itu diperbaiki ($ E $ 2) melalui rentang, atau relatif terhadap posisi rentang?
Vylix
Kami dapat membantu Anda menulis VBa ... Mengapa Anda tidak membagikan apa yang telah Anda coba sehingga kami dapat membantu
Dave
Dalam contoh Anda E11 bukan "VALUE", itu adalah String; ini adalah array karakter. Karakter 1 adalah "0", bukan Nol. Karakter 6 adalah "|" dan seterusnya. Jadi menyatakan nilai-nilai yang tidak terpisahkan bukanlah sebuah istilah dalam Excel, ini adalah sebuah String dalam bahasa pemrograman dan biasanya dirujuk dalam String data dan kata-kata seperti Token digunakan dan Pembatas. Jika Anda tahu apa itu String, Token, dan Delimiter, maka itu awal. Dan Anda tidak mengungkapkan jika 001.1, atau xxx.x selalu 3-karakter kemudian satu periode kemudian satu karakter. Ini sepertinya data palsu untuk gambaran yang lebih besar tentunya. Ada aturan ketat definisi yang begitu ketat
ejbytes
Untuk memulainya tampak bahwa "001.1 | 002.1 ... | ..." mungkin merupakan data yang akan diimpor? Jika demikian, gunakan Pembatas "|", pembatas khusus untuk memisahkan nilai saat mengimpor. Sekali lagi, tampaknya merupakan kumpulan kecil dari gambar yang lebih besar, tidak semua poin dibuat dalam presentasi Anda. Perlu definisi yang ketat tentang bagaimana dan apa data yang Anda kerjakan sebenarnya; seberapa dinamis, betapa statis, kekakuan data, dll. Juga masalah BESAR bekerja dengan data adalah "menyiapkan data". Data mentah adalah sesuatu dengan sendirinya, tetapi untuk bereksperimen dengan data Anda harus mengatur data dengan benar; pengaturan data adalah 90% dari tugas
ejbytes
data saya adalah: string tunggal di kolom dan di akhir kolom ini adalah beberapa dari string ini tidak terpisahkan (pembatas |). ex. E2 = 001.1, E3 = 002.1, E4 = 003.1 dll dan pada akhirnya, E11 = 001.1 | 003.1. dan saya ingin memindai E11, dan jika beberapa string E2: E4 termasuk dalam E11, maka saya ingin menyorotnya.
Roman Žydyk

Jawaban:

0

Pilih nilai dalam Kolom E (E2: E7), Dalam pemformatan bersyarat, Aturan Baru, Gunakan Rumus untuk menentukan sel mana yang akan diformat.
=COUNTIF($G$11:$I$11,"*"&E2&"*")>0 dan Format
Tidak perlu memasukkan E2: E7 dalam Formula cukup pilih untuk dimasukkan dalam Pemformatan Bersyarat
Rumus akan cocok jika E2 misalnya dalam string sel G11: I11 jika True itu akan memformat sel yang sesuai di E
Memperbarui
Jika Anda perlu membandingkan dengan E11, gunakan saja:
=COUNTIF($E$11,"*"&E2&"*")>0 dan Format
tidak perlu memisahkan E11 (Teks ke kolom)
Kemudian buat aturan baru =E2="" dan jangan memformat
Di Kelola Aturan, klik Aturan ini dan klik di bawah Hentikan jika Benar baris yang sama dari aturan ini

yass
sumber
Terima kasih. ini berfungsi, tetapi apakah mungkin untuk memindai seluruh string (E11), jadi saya tidak perlu memisahkan nilai? (G11: I11)
Roman Žydyk
Sertakan E11 dengan G11: I11 seperti $ E $ 11: $ I $ 11
yass
Apakah Anda ingin E11 disorot?
yass
tidak, string tunggal, yang termasuk dalam string yang tidak terpisahkan. Jika saya memiliki E2 = 001.1, E3 = 002.1, E4 = 003.1 dan E11 = 001.1 | 003.1 - Saya ingin menyorot E2 dan E4.
Roman Žydyk
Bisakah Anda memasukkan E11 dengan G11: I11 atau Anda memiliki F11 yang tidak perlu Anda sertakan?
yass
0

Jika nilai tunggal dan gabungan Anda berada dalam satu kolom, coba ini di pemformatan bersyarat:

=ISNUMBER(SEARCH(E2, $E$11))

Di mana E2 adalah kisaran kemungkinan substring E11.

Seperti jawaban @yass, tambahkan aturan baru untuk =E2='', Kelola Aturan, dan periksa Hentikan jika Benar

Vylix
sumber
terima kasih, tetapi ini hanya akan menyoroti string yang tepat, tetapi, saya perlu itu harus memindai string itu, dan jika ada dalam string itu salah satu rekaman tunggal, itu harus menyoroti yang itu.
Roman Žydyk
Dalam hal ini, Anda harus mengubah "string" ke E2, dan membandingkannya dengan E11, di mana E2: E9 adalah rentang string yang perlu Anda bandingkan dengan string yang dipatenkan di E11. Biarkan saya memperbaiki jawaban saya.
Vylix