ウィンドウズ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で質問しましょう!
似たような質問が見つかりました
- 電車・路線・地下鉄 【鉄道】山手線の駅の格付けランキングを作ってみました!皆さんのご意見をよろしくお願いいたします。 4 2023/02/11 16:45
- 電車・路線・地下鉄 亀有駅から上野駅に行くのに不満なのは北千住駅が原因ですか? 3 2023/05/31 15:05
- 関東 山手線駅名戦いゲームで、東京駅より左と右では、どちらが勝率あると思いますか? 2 2023/01/13 20:31
- 関東 千歳船橋や代々木上原や馬喰横山ってややこしくないですか?馬喰町や代々木、船橋でもない 4 2022/07/21 22:32
- 電車・路線・地下鉄 定期券を売ってもらえなかたことはありますか? 5 2023/07/20 23:43
- その他(住宅・住まい) 東京の西日暮里付近で野宿しようと思うのですが、何処かお勧めはありますか? 6 2022/12/01 14:34
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- 電車・路線・地下鉄 日暮里駅で京成線からJR線に乗り換えるのですが、 乗り換え改札口をPASMO一枚で通過することは可能 4 2023/06/28 07:19
- 電車・路線・地下鉄 日暮里駅での乗り換え方法について質問です。 京成線からJR線に乗り換えます。 京成の定期券(PASM 3 2023/06/27 21:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
エクセルのセルの中の,よりも前...
-
Excelのmatch関数エラー原因が...
-
置換機能を使わずに先頭に「'」...
-
Excelで、半角スペースをTABに...
-
excelで可視セルのみ置換
-
Excelからテキストへのコ...
-
<Excel>別シートの値を等間隔で...
-
Excel "~区"のみを削除したい
-
エクセルの表ををメモ帳などに...
-
エクセルでセル内の一部を一括...
-
Excelで電話番号などの-(ハイ...
-
Excelのシートにある1行...
-
【エクセル】ピボットテーブル...
-
EXCELで"Tab"を"@"に置換したい
-
Excelの入力済みセルに一括で、...
-
エクセルの関数で、記号などを...
-
エクセルでスペースの記号を表...
-
Excelの空文字セルの削除方法を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
多数の計算セルに一括で同一の...
-
エクセルで文字の入力がセルの...
-
Excelのmatch関数エラー原因が...
-
Excelからテキストへのコ...
-
エクセルのセルの中の,よりも前...
-
excelで可視セルのみ置換
-
Excelの空文字セルの削除方法を...
-
置換機能を使わずに先頭に「'」...
-
Excelの入力済みセルに一括で、...
-
小数点を消す方法
-
Excelのシートにある1行...
-
エクセルでセル内の一部を一括...
-
【エクセル】ピボットテーブル...
-
エクセルの表ををメモ帳などに...
-
エクセルでセル内の一部分だけ...
-
Excelで電話番号などの-(ハイ...
-
Excelで、半角スペースをTABに...
-
一括でダブルクリックした状態...
-
エクセルの関数で、記号などを...
-
Excelのアポストロフィーの削除
おすすめ情報