• ベストアンサー

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

以下はエクセルのセル内のデータです。「,」が2つの用途で使われています。 ↓セル内のデータ 「環境を変える」 木村知則,田代信也 定価: ¥ 1,512 つまり ・数字の区切り→¥ 1,512 ・単語の区切り→木村知則,田代信也 です。これらを以下のように変換したいです。 ・¥ 1,512→¥ 1512 ・木村知則,田代信也→木村知則/田代信也 セル数は1000行程度で同一列です。セル内のデータ形式は一定ではありません。上記全てを含むセル、含まないセルが混在しています。 置換でやろうとしましたがうまくできません。 よろしくお願いします。

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

  • ベストアンサー
  • kon555
  • ベストアンサー率52% (1742/3338)
回答No.2

VBAやアドオンで対処できますが、ちょっと大掛かりですし、アドオンは職場によっては勝手に導入できないですので不向きですね。 ひとまず通常操作でやれる手順を。 1.まず対象セル全てに「, → /」の置換をかける  これで名前の区切りは達成。金額のみのセルは変わらず、文字列交じりのセルは『定価: ¥ 1/512』のようになっているはず。 2.次に「1/ → 1」「2/ → 2」・・・の置換を「9/ → 9」まで行う  これで文字列交じりのセルと、テキスト形式で「¥」が入力されたセルは『定価: ¥ 1512』になる。名前の区切りは/のまま。また金額のみのセルも「¥ 1,512」で変化なし。 (ただし名前の氏名や先頭が数字の人間が存在した場合は別。"0山田太郎5"とか。いないと思いますが) 3.最後に対象セルの書式設定で、表示をユーザー定義「¥ ###0;¥ -###0」に変更する  これで数値のみの入力で、書式の問題から「¥ 1,512」になっていたセルも変換完了。 ちょっと迂遠ですが、これで通常操作だけで達成可能なはず。検索は対象セルの列のみを選択して行う事をオススメします。 また、もし定期的に行う業務ならば、対象セルの範囲を選択した状態で『マクロの記録』を行えば、繰り返し使用可能なマクロ化も出来ます。 ご参考まで。

lock_on
質問者

お礼

うまくできました! ありがとうございます。

その他の回答 (3)

  • mdmp2
  • ベストアンサー率55% (438/787)
回答No.4

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

lock_on
質問者

お礼

ちょっとはワザを使わせてくださいよ。 ありがとうございます。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

lock_on
質問者

お礼

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

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

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

lock_on
質問者

お礼

そのような規則性はありません。 ありがとうございます。

関連するQ&A

  • エクセルで100行ほどのセルに、単語が3~10個、半角スペースで区切ら

    エクセルで100行ほどのセルに、単語が3~10個、半角スペースで区切られて入力されています。 これを一気にスペースごとに別のセルに移したいのですが。「データ」→「区切り位置」だと1行ごとに行わなければならないので…よろしくお願いします。

  • エクセルでの変換について

    エクセルのデータで、氏名住所電話番号などが、同じセルに一緒に入っているデータを整理された表に直したいのです。 電話番号を抜き出すために、「0***-」のデータを「,0***-」に変換するには、(編集)→(置換)のところで置換前、置換後を何と入力すればよいですか? 0533-とか052-とか0491-などの文字の前に「,」を挿入して、その後(データ)→(区切り位置)でセルを区切っていくためです。

  • CSVデータをエクセルのセルに入れたい・・・

    よろしくお願いします。 CSVデータを当方ではエクセルで開いてます。 カンマ区切りごとのデータがエクセルのセルに1つずつ入力されてるので 不用データを行や列ごと削除できるので便利に使っていました。 が、他のPCでデータを同じように加工しようとしたところ、最初のセルに全て連続して入っているという状態で、上記のような作業が出来ませんでした。 5台のPCともXPでエクセル2003です。 テキスト形式・タブ区切り・カンマ区切りなどなど専門的なことが良く判っていないため、説明もうまくできませんが、PCの設定なのか?セルに1つづつ分ける方法があるのか?何でわたしのだけ? ?? 引継ぎが出来ず困っておりますのでどなたかお願いします。教えてください!!

  • excel→txtファイル作成時、セル間に「”」ができるのを防ぐ方法

    Excel→txt形式(タブ区切り)でファイルを保存し、データをみてみると、セルとセルの間に「”」というような記号が入ってしまうことがあります。 これを防ぐ方法、また何が原因で起こっているのか教えていただけないでしょうか? ------------------------- 例えば、 excel に1行目:「001」「A_IN」「B_IN」     2行目:「002」「B_IN」「OUT」 という6つの要素を入れて、それをテキスト形式(タブ区切り)で保存すると、以下のように「”」という記号が入ってしまうときがあります。 「”」が入る位置は何回か試したところ、変わることがありました。 001A_IN"A_IN"B_IN 002B_IN"B_IN"OUT ------------------------- また、元のexcelのデータが入っている部分を、outlookのリッチテキスト形式で書いているメールに貼り付けると、一部分のデータにおいて、セル内で変に改行されていたり、右端でセルに入っていたりしているのが確認できました。 たぶん、Excel上では目には見えないけれど、何かタブのようなものが入ってしまっているではないかと思いましたが、どのように解決すればいいか、また、何が原因だか全くわかりません。 よろしくお願いいたします。

  • Excelのセル内にある特定文字で改行させたい

    ある汎用のシステムから出力されるテキスト(文章)をCSV形式のデータをEXCELデータに変換しています。そのEXCELに変換されたデータは、文章です。 1点問題があります。そのセル内の文章は、ある特定の記号を改行の代わりとして、連続したテキスト文章になっているため、非常に読み辛いものになっていますいます。その改行を意味する特定記号は、複数個存在し、セル内の個数は一定ではありません。  そのため、読み辛さを解消するためい、その特定記号をセル内での改行に置換させる、マクロまたはVBAでの一括処理することが出来ないでしょうか。置換処置後は、特定記号は不要です。 なお、(1)改行を意味する特定記号は、「~|」です。~と|の組み合わせで、それはそれぞれ半角表記されています。(2)1ファイルにおける対象レコード(行)は、約3,000~10,000行あり、手作業での処理は不可能です。 宜しくお願いします。

  • セルの色分け

    質問失礼します。 エクセルに入力する際、区切りや色分けをし、見やすくして、入力していきたいのですが、一本、一本線を引くことはできたのですが、2万行ほどあるので、いっきに区切りを入れる方法などあるのでしょうか。 理想は5行ごとに、セルの色分けをして、かつ、20行ごとに区切り線をいれていきたいです。 データを入力後は、区切り線や色などを消し元に戻す予定でいます。 できるでしょうか? お願いします。

  • Excelで同内容のセルを検索機能を使わずに一括選択したい

    「同内容のセルがシート内にX個(以上)ある場合、そのセルの色を変える」 という操作がしたいのですが、置換機能以外でExcel2002に そういった機能があれば教えていただきたく存じます。 具体的には、1列3000行で、3000行のデータ(全て文字列です)が 全て異なる列5列で構成されたデータがあり、5列の中で重複する セルがあれば色分けして表示したいのです。 「置換機能以外で」というのは、さすがにセルの数が多すぎて 手動では対応し切れなかったためです。 ある程度自動化できるなら置換機能の利用も歓迎いたします。 よろしくお願い致します。

  • エクセルのセルの表示形式について教えてください。

    1つのセルをわけたいんです。↓ 4ケタの数字と3桁の数字が混在しているセルです。 「102」を表示形式で4ケタ(=0102)に変更して それを「01」と「02」に分けたいんです。 (「01」の上2桁がほしい) 区切り位置をしても、もとの表示形式(102)になってしまい 上二桁を拾えません。 LEFT関数を使用してももとの表示形式(102)になってしまい 上二桁として10になってしいます。 上二桁01がほしいんです。 もとの表示形式にならない方法はありますか? ネットでもどう調べてよいかわからず質問しました。 お分かりになる方、お力を貸してください。 宜しくお願いいたします。

  • excelで1セル毎のバイト数指定できますか?

    excelのデータをテキスト(スペース区切り)形式で保存した時、セル1マスを10バイト右詰め(半角10文字以下はスペース)にしたいのですがどのようにすればよいでしょうか?どなたかアドバイスお願いします。 例)  ______ |7.50│ ----- ↓ テキスト形式に変換 □□□□□□7.50 ※□1個を半角スペースと考えてください

  • VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。

    VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。 お世話になっております。 VBAで下記を行いたいと考えております。 全体の流れとしては、テキストを読み込み⇒エクセル上で編集⇒テキスト保存です。 そのエクセル上で編集⇒テキスト保存で悩んでおります。 編集した複数のシートを、個別にタブ区切りのテキストファイルに保存したいと考えております。 出力する際に、小数点の「,」⇒「.」に変換します。 ※小数点を「,」として利用しています(海外対応) 編集するシートは全てのセルが文字列形式になっており、列も行も読み込むテキストによって可変なので、統一されているわけではありません。 最終行はA列ではなくB列でカウントします。 全てのセルに値が入っているわけではなく、空白もあります。 また、各セルには「0.00000」や「02.24」等の数値も入っており、数値形式にしてしまうと0が消えてしまうので、全てのセルを文字列形式として編集しています。 なお、小数点以下の桁数も可変です。 つまり、小数点が「,」となっているのを「.」になおし、タブ区切りのテキストファイルとして保存したいのです。 出力する際に、いったん別ブックに保存⇒不要なシートを削除⇒タブ区切りで保存はできたのですが、自分があまりVBAに詳しくないせいか、これでは文字列形式で保存されなかったため、シートを新規ブックにコピー⇒タグ区切りで保存に変更しました。 しかし、これではcells.replace ~で置換すると、「00,000」が「0」になってしまいました。 ※「22,222」等は問題ないのですが……何故かは分かりませんでした。 ファイルとしては20000万行~25000行程度です。 列としては40列前後になります。 あまりVBAには詳しくないので、まとはずれな事を言っているかもしれません。 何か良い方法はありますでしょうか? 宜しくお願いいたします。

専門家に質問してみよう