- ベストアンサー
エクセルの文字で数種類の文字を変換出来る関数などの方法を教えて下さい。
エクセルのセル内の文字変換の関数など、方法を教えて下さい。 現状一つの列に対して、約12000行(12000件分)「500×500×500」などの立方体を表す入力をしているのですが。 この入力を複数の人間で数年間かけて行ったため、「×」(かける)の表記が色々となってしまっており、これを1種類の表記にまとめたいのですが。 現状のこの「×」(かける)表記が確認出来ているだけで、 「*」(アスタリスク) 「X」(エックス大文字半角) 「X」(エックス大文字全角) 「x・x」(エックス小文字全角・半角) 「X・ⅹ」(ローマ数字10表記2種) 「χ」(記号?不明) などが使用されております。 中には「500*500×500」という一つの表記の中に2種類使用してしまっている場合もあります。 今回これらを一つの表記方法で、統一したく皆様にお願いさせていただきます。 エクセルレベルの高くない者ですが、何卒宜しくお願い致します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
もし、そのセルが 「数字」と「入力したひとによって違いはあるものの『かけ算記号』」だけで構成されているなら、 以下のような「正規表現による検索・置換」アドインを使って 検索文字列:「\D」...数字以外の文字(\dは数字を表すので注意) 置換文字列:「×」...全角のかけ算文字に置き換えたい場合 とすれば数字以外の文字を一度に「×」へ置き換えることができます。 http://srcedit.pekori.jp/tool/excelre.html ご参考まで...
その他の回答 (7)
ん? ご質問の趣旨を取り違えていましたらすみません。 【「500×500×500」などの立方体を表す】文字列について、 【「×」(かける)の表記が色々となって】いるので、 【1種類の表記にまとめたい】のですよね。 で、「×」(かける)の表記にどんな文字が使われているか、 すべてを確認できているわけではないと。 ---------------------------------------- であれば、例えば元の文字列がA列に入力されているとして、 1.A列について、左からチェックして最初の、「数字でない文字」を「×」に置き換える B1セル: =REPLACE(A1,MATCH(FALSE,INDEX(ISNUMBER(-LEFT(A1,ROW(INDIRECT("1:"&LEN(A1))))),),0),1,"×") 2.B列について、右からチェックして最初の、「数字でない文字」を「×」に置き換える C1セル: =REPLACE(B1,LEN(B1)+1-MATCH(FALSE,INDEX(ISNUMBER(-RIGHT(B1,ROW(INDIRECT("1:"&LEN(B1))))),),0),1,"×") として下方にフィルすれば片付くように思います。 ※一文字ずつではなく文字列を取り出してチェックしているのは、 小数表示や、記号の前後に無駄なスペースがある場合に対応するためです。 例 A1:「500.4▲500.5◆500.7」 ↓ B1:「500.4×500.5◆500.7」 ↓ C1:「500.4×500.5×500.7」 Excel2003で動作確認済。 ---------------------------------------- あるいは、下記のような方法で3つの数値をいったん取り出してから、 「×」を挟んで繋ぎ直しても良いかもしれません。 ■エクセルで数字とアルファベットと文字列を分割する方法 http://oshiete1.goo.ne.jp/qa3751652.html 以上ご参考まで。
お礼
URL参考にさせていただきました。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
検索・置換は複数セル範囲に対して操作できるので早いです。 (1文字の文字集合)-->1文字 は置換で出来ませんから、置換変換前文字1文字ーー>特定1文字 を文字数だけ繰り返すよりほかない。 見かけ上上記Aが出来るようプログラムも組めますが VBAや正規表現など概念やスキルの習得もすぐには難しく、エクセルの通常の操作をなぜしないのですか。 何か良い方法と思うのですか。 しかし多寡が10回程度でしょう。質問に書き込む間に終る。 何かそれではうまく行かない理由がありますか。
お礼
そうですね。すみませんでした。ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 総当たり制の置換の方法をマクロに置き換えました。 標準モジュールへの取り付け方: Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 後は、Alt + F8 で、「Replacing_X」を実行してみてください。ただし、余計なものまで置換をするとも限りませんので、実行する前には、保存するかバックアップを取ってください。予測付かないことがあるのは、日本語版Excelは、独自の非公開の曖昧検索文字が入っている可能性があるからです。こちらで試した範囲の中では、成功しています。 また、単独の英字でも、これは置換してしまいますので、その場合は、検索コマンドと正規表現を組み合わせた置換をしなくてはならない可能性があります。例えば、数字*数字のような文字パターンにのみヒットするような方法は、別の方法が必要です。 '------------------------------------ Sub Replacing_X() Dim args As Variant Dim arg As Variant '検索文字を、,"x" と、入れます。 args = Array("~*", "X", "X", "x", "x", "ⅹ", "χ") Application.ScreenUpdating = False With ActiveSheet.UsedRange For Each arg In args .Replace arg, "×", xlPart, , True, True Next arg End With Application.ScreenUpdating = True End Sub '------------------------------------- なお、何万個のセルをひとつずつ、総当たりする場合は、オブジェクトとして取り扱ったほうが速いと思います。 なお、不必要になりましたら、マクロの登録した「標準モジュール」自体を、プロジェクト・エクスプローラから、右クリックで解放してして、削除してしまってください。後は、何も残りません。
お礼
ありがとうございました。でも私のレベルでは少し高度だったので・・・。回答に感謝です。
#4です。 > 「500×500×500」などの立方体を表す まさか、この数字も全角と半角が混じっていませんか? もしそうなら、先の回答の「¥D」は全角の数字も含まれてしまうので、 「[^\d0-9]」....半角と全角の数字以外 としてください。 また、もし「××」となってしまったら 検索文字列:「[^\d0-9]+」 としてください。
お礼
ありがとうございました。
文字列置換の関数はREPLACE関数やSUBSTITUTE関数などが思いつきますが 置換対象が複数ありますし、結構複雑な式になりそうです。 この程度の対象ならば、普通に『編集』⇒『置換』のほうが早いかと…。 的確な回答でなくてすいません。
お礼
やはり簡単ですよね。ありがとうごうざます。
- mu2011
- ベストアンサー率38% (1910/4994)
安直ですが、編集→置換を文字パターン繰り返す方法は駄目でしょうか。 因みに*(アスタリスク)はワイルドカードの為、検索文字列を~*(チルダ・アスタリスク)として下さい。 又、置換オプションで半角・全角区別なしの選択で作業回数が減ると思います。
お礼
やはりそうですすね。*(アスタリスク)すら知りませんでした。ありがとうございます。
- suz83238
- ベストアンサー率30% (197/656)
結局、「編集」→「置換」で行うしかないです。それぞれ「*」を「×」とか一個一個するしかないです。
お礼
やはりこれが一番ですかね。ありがとうございます。
お礼
ありがとうございました。この方法で出来ました。