- ベストアンサー
セル内の「,」を選択的に変換する
以下はエクセルのセル内のデータです。「,」が2つの用途で使われています。 ↓セル内のデータ 「環境を変える」 木村知則,田代信也 定価: ¥ 1,512 つまり ・数字の区切り→¥ 1,512 ・単語の区切り→木村知則,田代信也 です。これらを以下のように変換したいです。 ・¥ 1,512→¥ 1512 ・木村知則,田代信也→木村知則/田代信也 セル数は1000行程度で同一列です。セル内のデータ形式は一定ではありません。上記全てを含むセル、含まないセルが混在しています。 置換でやろうとしましたがうまくできません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAやアドオンで対処できますが、ちょっと大掛かりですし、アドオンは職場によっては勝手に導入できないですので不向きですね。 ひとまず通常操作でやれる手順を。 1.まず対象セル全てに「, → /」の置換をかける これで名前の区切りは達成。金額のみのセルは変わらず、文字列交じりのセルは『定価: ¥ 1/512』のようになっているはず。 2.次に「1/ → 1」「2/ → 2」・・・の置換を「9/ → 9」まで行う これで文字列交じりのセルと、テキスト形式で「¥」が入力されたセルは『定価: ¥ 1512』になる。名前の区切りは/のまま。また金額のみのセルも「¥ 1,512」で変化なし。 (ただし名前の氏名や先頭が数字の人間が存在した場合は別。"0山田太郎5"とか。いないと思いますが) 3.最後に対象セルの書式設定で、表示をユーザー定義「¥ ###0;¥ -###0」に変更する これで数値のみの入力で、書式の問題から「¥ 1,512」になっていたセルも変換完了。 ちょっと迂遠ですが、これで通常操作だけで達成可能なはず。検索は対象セルの列のみを選択して行う事をオススメします。 また、もし定期的に行う業務ならば、対象セルの範囲を選択した状態で『マクロの記録』を行えば、繰り返し使用可能なマクロ化も出来ます。 ご参考まで。
その他の回答 (3)
- mdmp2
- ベストアンサー率55% (438/787)
金額が記述されたセルが同じ列にあるなら、その列を選択して「置換」を実行します。 そうでなければ、「次を検索」該当するなら変換で、一個一個やったらいかがですか?1個1秒で1000秒=17分、1回だけの作業です。考えている間にできてしまいます。
お礼
ちょっとはワザを使わせてくださいよ。 ありがとうございます。
- nishi6
- ベストアンサー率67% (869/1280)
質問で、「定価: ¥ 1,512」が後で「¥ 1,512」になったり、「上記全てを含むセル」の意味を測りかねましたがマクロを作ってみました。 Excel VBAは検索が弱いので、数値の判定が冗長ですが、実質数行です。変換したいセルを選択し、マクロを実行します。 マクロは標準モジュールに貼り付けます。当方win10、Excel2010です。 Sub Okikae01() Dim rng As Range '// セル Dim txt1 As String '// 返還前 Dim txt2 As String '// 変換後 Dim L As Integer '// 文字カウンタ For Each rng In Selection txt1 = rng.Value txt2 = Left(txt1, 1) '// 数値間のカンマ置き換え For L = 2 To Len(txt1) If Mid(txt1, L, 1) = "," Then If Not (Mid(txt1, L - 1, 1) Like "[0-9]" And Mid(txt1, L + 1, 1) Like "[0-9]") Then txt2 = txt2 & Mid(txt1, L, 1) End If Else txt2 = txt2 & Mid(txt1, L, 1) End If Next rng.Value = txt2 rng.NumberFormatLocal = "\ #0_ " '// 数値カンマなし rng.Replace What:=",", Replacement:="/" '// 文字間のカンマ置き換え Next End Sub
お礼
大変ご親切な回答ありがとうございます。私のレベルでは2のやり方が最適でした。 ありがとうございます。
- kteds
- ベストアンサー率42% (1884/4443)
>セル内のデータ形式は一定ではありません ¥の前方の , は / に置換 ¥の後方の , は null に置換 という規則性はあるのでしょうか?
お礼
そのような規則性はありません。 ありがとうございます。
お礼
うまくできました! ありがとうございます。