dポイントプレゼントキャンペーン実施中!

お世話になっております。

Excel VBAでこんなことできるのかわかりませんが、ご教授いただきたくよろしくお願いいたします。

例えば、

(1)
A列の(セルA1)
具有能量回收的电动汽车制动控制方法

B列の(セルB1)
具有エネルギー回収的電気自動車制动控制方法

があった時に、その差分用語

(2)
A1:能量、电动汽车
B1:エネルギー、電気自動車

を任意の別シートのA列、B列にそれぞれ出力したいのですが、

<イメージ>
A列       B列
能量       エネルギー
电动汽车    電気自動車

そんなことって可能なのでしょうか?
可能であれば、(1)でA列、B列にそれぞれ対応した差分用語を
(2)の別シートに出力していきたいです。


わかる方がおりましたら、ご教授の程よろしくお願いいたします。

A 回答 (2件)

スマフォなので少し分かりにくい表現になったかもしれません。

補足します。

あなたの例で仮に「エネルギー電気自動車」という順番で差分が並んだ場合、VBではこの2つを切り離す基準を提示してあげないとダメなはずです。
私が書いた案は、あくまで上下の差が見つかった時を基準に文字列を分割しています。別シート等に単語を登録しておけば、この分割の基準に使えます。
言葉足らずですが、ご参考まで。
    • good
    • 0

VBには単語を認識する力は無かったと思います。

つまり、エネルギーという文字列を塊として捉えられず、あくまでエ、ネ、ル、ギ、ー、という個々の文字でしか比較対象に出来ません。

となると、ロジックを無理やり組んでみるしかないですね。前提としては、
差分となる文字列は1文字以上である。
連続した文字列の後ろは共通の文字の可能性がある。
この場合、差分となる文字列が2つ以上続けて現れた場合、前述の通りこれらをVBだけで分割するのは難しいと思います。

無理矢理分割するなら、処理を分けて単語を登録しておき、差分を出した結果をさらに分割する方法がありますが、不特定多数の単語に対しては難しいでしょう。
差分を出すだけなら、上下を1文字ずつ比較し、等しい場合は次の文字に移り、異なる場合は文字を変数に格納。上下で単語の文字数が異なる場合もあるので、格納した変数同士も比較し、同じ文字があったらその文字以降を切り捨て、本来の比較対象に切り捨てた場所から最初と同じ比較を始める。で、文字列の最後まで到達したら終了。あとはこれをきちんと整理してソースを書けば大丈夫だと思います。ご参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!