こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

セル内の「,」を選択的に変換する

以下はエクセルのセル内のデータです。「,」が2つの用途で使われています。
↓セル内のデータ
「環境を変える」
木村知則,田代信也
定価: ¥ 1,512

つまり
・数字の区切り→¥ 1,512
・単語の区切り→木村知則,田代信也
です。これらを以下のように変換したいです。
・¥ 1,512→¥ 1512
・木村知則,田代信也→木村知則/田代信也

セル数は1000行程度で同一列です。セル内のデータ形式は一定ではありません。上記全てを含むセル、含まないセルが混在しています。

置換でやろうとしましたがうまくできません。

よろしくお願いします。

投稿日時 - 2019-09-12 03:06:32

QNo.9655910

困ってます

質問者が選んだベストアンサー

VBAやアドオンで対処できますが、ちょっと大掛かりですし、アドオンは職場によっては勝手に導入できないですので不向きですね。
ひとまず通常操作でやれる手順を。

1.まず対象セル全てに「, → /」の置換をかける
 これで名前の区切りは達成。金額のみのセルは変わらず、文字列交じりのセルは『定価: ¥ 1/512』のようになっているはず。

2.次に「1/ → 1」「2/ → 2」・・・の置換を「9/ → 9」まで行う
 これで文字列交じりのセルと、テキスト形式で「¥」が入力されたセルは『定価: ¥ 1512』になる。名前の区切りは/のまま。また金額のみのセルも「¥ 1,512」で変化なし。
(ただし名前の氏名や先頭が数字の人間が存在した場合は別。"0山田太郎5"とか。いないと思いますが)

3.最後に対象セルの書式設定で、表示をユーザー定義「¥ ###0;¥ -###0」に変更する
 これで数値のみの入力で、書式の問題から「¥ 1,512」になっていたセルも変換完了。

ちょっと迂遠ですが、これで通常操作だけで達成可能なはず。検索は対象セルの列のみを選択して行う事をオススメします。
また、もし定期的に行う業務ならば、対象セルの範囲を選択した状態で『マクロの記録』を行えば、繰り返し使用可能なマクロ化も出来ます。

ご参考まで。

投稿日時 - 2019-09-12 06:51:45

お礼

うまくできました!

ありがとうございます。

投稿日時 - 2019-09-12 19:02:37

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

金額が記述されたセルが同じ列にあるなら、その列を選択して「置換」を実行します。
そうでなければ、「次を検索」該当するなら変換で、一個一個やったらいかがですか?1個1秒で1000秒=17分、1回だけの作業です。考えている間にできてしまいます。

投稿日時 - 2019-09-12 10:10:49

お礼

ちょっとはワザを使わせてくださいよ。


ありがとうございます。

投稿日時 - 2019-09-12 18:58:16

ANo.3

質問で、「定価: ¥ 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

投稿日時 - 2019-09-12 08:03:06

お礼

大変ご親切な回答ありがとうございます。私のレベルでは2のやり方が最適でした。


ありがとうございます。

投稿日時 - 2019-09-12 19:03:39

ANo.1

>セル内のデータ形式は一定ではありません
¥の前方の , は / に置換
¥の後方の , は null に置換
という規則性はあるのでしょうか?

投稿日時 - 2019-09-12 06:26:53

お礼

そのような規則性はありません。


ありがとうございます。

投稿日時 - 2019-09-12 18:56:56

あなたにオススメの質問