プロが教えるわが家の防犯対策術!

お世話になります。
エクセルシートの例えばセルB1からB4000まで文字(1-12,1-564等)が入力されていて
その文字を検索値としてVLOOKUPしたいのですが、文字のなかに不要なものが入っている
ため検索できません。関数のTRIMを使えばできるのですが、VBAを使ってやってみたいと
思っています。TRIMを使ってB1からB4000をA1からA4000に入力したいです。
どなたかよろしくお願いします。

質問者からの補足コメント

  • うーん・・・

    データベース
       検索値         A列       B列     C列      D列
    任意の文字を手入力     2-124    2-124 -41468.298 65992.144
                  2-125    2-125 -41466.876 65997.72
                  2-126    2-126 -41464.449 66009.815
    説明不足でしたので再度質問します。
    B列の文字列の中から検索しC列、D列のX座標、Y座標を引っ張って来てある計算をします。
    ところが、B列の文字には目には見えない不要なものが文字の後ろについています。
    そこで、関数TRIMを使ってB列の不要なものを取り除きA列に移したいのですが、データは4000
    行あります。

      補足日時:2023/04/07 14:22
  • うーん・・・

    データベース
       検索値         A列       B列     C列      D列
    任意の文字を手入力     2-124    2-124 -41468.298 65992.144
                  2-125    2-125 -41466.876 65997.72
                  2-126    2-126 -41464.449 66009.815
    説明不足でしたので再度質問します。
    B列の文字列の中から検索しC列、D列のX座標、Y座標を引っ張って来てある計算をします。
    ところが、B列の文字には目には見えない不要なものが文字の後ろについています。
    そこで、関数TRIMを使ってB列の不要なものを取り除きA列に移したいのですが、データは4000
    行あります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/04/07 15:23
  • うーん・・・

    B列の文字の後ろにある不要なものを削除したいです。
    よろしくお願いします。

    No.5の回答に寄せられた補足コメントです。 補足日時:2023/04/07 16:04
  • うーん・・・

    お世話になります。
    Option Explicitのところでコンパイルエラーがでました。
    よろしくお願いします。

    No.6の回答に寄せられた補足コメントです。 補足日時:2023/04/07 16:54
  • うーん・・・

    Option Explicitは1行ですけど?

    No.7の回答に寄せられた補足コメントです。 補足日時:2023/04/07 17:24
  • うーん・・・

    お世話になります。
    頂いたコードのみで実行しました。
    すみません、2時間ほど離席します
    良かったらまたお願いします。

    No.8の回答に寄せられた補足コメントです。 補足日時:2023/04/07 17:28
  • うーん・・・

    お世話になります。
    実行できましたが、A列は空白です。
    よろしくお願いします。
    急いでないので来週で結構です。

    No.9の回答に寄せられた補足コメントです。 補足日時:2023/04/07 20:02
  • うーん・・・

    お世話になります。
    朝一からありがとうございます。
    RE.Pattern = "^(\d+-\d+).*" に変えたら、OKでしたが
    文字によっては(157kとか)空白のままでした。
    A列    B列    Ç列    d列
       157K -41139.649 66259.242
    2-151 2-151 -41782.718 65764.719
    2-95    2-95 -41779.504 65769.945
       217K -41163.247 66049.471
    こんな感じです。
    ちなみに、実行するまえはA列は空白です。
    よろしくお願いします。

      補足日時:2023/04/10 09:23
  • うーん・・・

    お世話になります。
    前回の補足説明では、157K-41139.649 66259.242の様にB列、C列、D列の文字が
    くっついているように見えますが、C列、D列はなにも操作はしません。
    出来ればB列の文字がどのようなものでも、不要なものを削除してA列に持っていきたいのですが
    別のキャドからデータを取るときに2-151のようなものだけ取ってくればいまのままで
    大丈夫です。

    A列      B列      C列     D列
         157K     -41139.598    66259.242
    2-251   2-251     -41782.458    65764.719

      補足日時:2023/04/10 10:32
  • うれしい

    お世話になります。
    A列には157Kにしたいです。
    よろしくお願いします。

    No.13の回答に寄せられた補足コメントです。 補足日時:2023/04/10 11:00

A 回答 (15件中11~15件)

No4です。


>説明不足でした、ありがとうございました。

結局、No4の補足要求に対してYesなのでしょうかNoなのでしょうか。
Yesであれば、マクロの提供は可能です。
この回答への補足あり
    • good
    • 0

B列の文字が、


数字+ハイフン+数字+不要な文字 で構成されているとき
数字+ハイフン+数字 の部分をA列に設定したいということでしょうか。
    • good
    • 0
この回答へのお礼

説明不足でした、ありがとうございました。

お礼日時:2023/04/07 15:26

>>関数のTRIMを使えばできるのですが



TRIMで削除出来るのは、文字列の前・後、及び、文字列間は1個を残して削除。
これだけ。

文字のなかの不要なものが削除される訳じゃ無い。
文字と文字の間にスペースが1個ずつ入ってるのなら、何も変化は起きません。

で一体、何をしたいの?
    • good
    • 0
この回答へのお礼

説明不足でした、ありがとうございました。

お礼日時:2023/04/07 15:26

具体的にどのようにA1~A4000に設定すれば良いのかが、わかりません。


添付図のような値が、B列にあったとき、A列にはどのような値を設定したいのでしょうか。
「vba」の回答画像2
この回答への補足あり
    • good
    • 0
この回答へのお礼

説明不足でした、ありがとうございました。

お礼日時:2023/04/07 15:26

こんにちは



具体的に何をなさりたいのかも不明ですし、何がわからないのかも不明なので、回答のしようがないのですが・・・

>TRIMを使って~
VBAのTRIM関数の使い方なら、以下をご参照。
https://learn.microsoft.com/ja-jp/office/vba/lan …

>VLOOKUPしたいのですが~
VLOOKUPと同様のことを行う場合は、大雑把に2つの方法が考えられます。

1)対象範囲内をループして該当値を探す方法
For ~ Next や ForEach ~ Next などのループで、一つずつ順にチェックする方法です。
複数以上のヒットがあっても処理できますし、判断条件も自由に設定可能です。
https://learn.microsoft.com/ja-jp/office/vba/lan …

2)シート関数のVLOOKUPを利用する方法
ほぼ同様の機能なのでわかりやすいかも知れませんが、VLOOKUPの機能以上のことはできません。
https://learn.microsoft.com/ja-jp/office/vba/api …


※ 「VLOOKUPでは、検索できません。」とおっしゃっていますが、内容によっては関数でも対応可能ではないかと想像しますけれど・・・
    • good
    • 1
この回答へのお礼

大変参考になりました、ありがとうございました。

お礼日時:2023/04/07 15:28

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