ウィンドウズ98、エクセル2000で作業中です。
駅名を数字に置換するマクロを作っています。
▽こんな感じです。(マクロの記録でエクセルが勝手に書いてくれました)
Selection.Replace What:="西日暮里", Replacement:="5", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False
1つのセルに1つの駅名を書いればうまく機能するのですが、複数の
駅名を入れると置換されなくなってしまいました。
|西日暮里| → |5|
|西日暮里:新宿| → |西日暮里:新宿|
置換に全文一致を使っていたのでそれを外すと新たな問題が,,,
|西日暮里:新宿| → |西4:1|
西日暮里は5に置換されるはずが、4に置換され、更に西が残りました。
西日暮里の前に、日暮里を4に置換(全文一致ではない)する行があったことが問題でした。
これをうまいこと回避する手はありますでしょうか?
説明に明確でない所があれば、指摘して下さい。
ちなみにマクロは素人で、今回初めて使います。
宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
|西日暮里:新宿| → |西日暮里:新宿|
の回避は、LookAt:=xlWhole → LookAt:=xlPart にして下さい。
|西日暮里:新宿| → |西4:1|
の回避は、文字列の長いものから、置換すればOKです。
この回答への補足
なるほどです。
(西日暮里が日暮里を置換することはないのでしょうか?試してみます)
(ちょと欲を出しまして)他の方法はないでしょうか?
と申しますのも、
駅名はじつはたくさんあります。ざっと1200駅はあります。
(何に使うかは長い話になりますので割愛)
西日暮里と日暮里、幕張と京成幕張、蒲田と京急蒲田、新宿と西新宿と新宿三丁目、武蔵野と,,,
といった感じなんです。
これにすべて別々の数字を割り当てています。
手間ついでにもう3手間くらいかければmiya_777さんのアドバイスで解決するのですが,,,
スマートな方法(やってることがスマートではないのですが,,,)はありますでしょうか?
宜しくお願い致します。
No.2
- 回答日時:
かなり日にちも経って無意味ですかね。
ユーザー定義関数を作ってみましたので参考に投稿します。多分、駅名を変換するデータがあると思って作っています。前提は、シートのどこかに変換テーブル、例えば、
新宿 1
京成幕張 2
新宿三丁目 3
日暮里 4
西日暮里 5
蒲田 6
京急蒲田 7
幕張 8
のようなものがあるとして、これに範囲名『data』を付けます。
使い方は、A1に駅名があれば、別のセルで =EkimeiOkikae(A1) とします。
セルには『:』で分けられた駅名が何個あってもかまいません。
以下を標準モジュールに貼り付けます。
Public Function EkimeiOkikae(Ekimei As String)
Dim wkEkimei As String 'セルの内容(ワーク)
Dim wkEkiElm As String 'セルの駅名の1つ
Dim pot As Integer '2つの駅名を分ける位置
Application.Volatile '自動再計算関数にする
wkEkimei = Ekimei & ":" '駅名が1つ、2つ以上を同じ形式にする
pot = InStr(wkEkimei, ":")
While pot > 0
wkEkiElm = Left(wkEkimei, pot - 1) '1つの駅名
wkEkiElm = Application.VLookup(wkEkiElm, Range("data"), 2, False) 'dataから検索
EkimeiOkikae = EkimeiOkikae & wkEkiElm & ":" '検索結果
wkEkimei = Right(wkEkimei, Len(wkEkimei) - pot) '複数の場合の次の駅名
pot = InStr(wkEkimei, ":")
Wend
EkimeiOkikae = Left(EkimeiOkikae, Len(EkimeiOkikae) - 1) '最後の『:』を除く
End Function
丁寧なご回答、
ありがとうございます。
また、お礼が遅くなってすいません。
ご回答頂いたのもお忘れかと思うほど時間が経ってしまいました。
>多分、駅名を変換するデータがあると思って作っています。
あります。
難しそうですが、チャレンジしてみます。
「転ばぬ先の杖」とはいいつつも自分の必要な知識から虫食いのように
勉強しています。
来年2月からは本格的に・・・。と密かに考えてはいるのですが・・・。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
エクセルのセルの中の,よりも前...
-
Excelで、半角スペースをTABに...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
Excelの空文字セルの削除方法を...
-
小数点を消す方法
-
エクセルでセル内の一部分だけ...
-
【エクセル】ピボットテーブル...
-
Excelのシートにある1行...
-
エクセルの表ををメモ帳などに...
-
Excelのmatch関数エラー原因が...
-
置換機能を使わずに先頭に「'」...
-
Excelの入力済みセルに一括で、...
-
excel 行をコピー→ペーストした...
-
一括でダブルクリックした状態...
-
エクセルの関数で、記号などを...
-
VBAでの日付の置換方法を教えて...
-
エクセルでスペースの記号を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelからテキストへのコ...
-
エクセルのセルの中の,よりも前...
-
Excelで、半角スペースをTABに...
-
Excelの空文字セルの削除方法を...
-
Excelの入力済みセルに一括で、...
-
excelで可視セルのみ置換
-
【エクセル】ピボットテーブル...
-
小数点を消す方法
-
置換機能を使わずに先頭に「'」...
-
Excelのmatch関数エラー原因が...
-
エクセルでセル内の一部分だけ...
-
エクセルの関数で、記号などを...
-
エクセルでスペースの記号を表...
-
エクセルの表ををメモ帳などに...
-
エクセルでセル内の一部を一括...
-
企業名簿で(株)や(有)を無視し...
-
別シートのリストから置換する方法
-
Excelのシートにある1行...
おすすめ情報