• ベストアンサー

エクセルで「ー」(ハイフン)と「ー」(マイナス)を

エクセルにデータをエクスポートするソフトがあります。 このデータをさらに処理するのですが、ある列にはデータがない場合「ー」(ハイフン)が出力されます。 これにある関数を施したいのですが、「ー」では処理できないため、これを「0」にする必要があります。 そのため、「ー」を「0」に置換するという方法を用いたのですが、そうしますと負の値「-」(マイナス)の「ー」も置換されて正の数になってしまうという弊害が発生します。 この、「ハイフンは置換するがマイナスはしない」ということができるのでしょうか。 どなたかご存じの方がいらっしゃいましたら、ご教授くださると幸いです。 どうぞ宜しくお願い申し上げます。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 横からお邪魔します。 VBAではどうでしょうか? 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim c As Range For Each c In ActiveSheet.UsedRange If StrConv(c, vbNarrow) = "-" Then c = 0 End If Next c End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

UMX-11
質問者

お礼

大変高度な内容(私にとって)をわかりやすくご回答いただきまして、ありがとうございました。 とても参考になりました。このたびは、本当にありがとうございました。

その他の回答 (3)

回答No.3

「-」のセルを「未入力」にしたいなら、No.1さんの方法で。「0」にしたいなら、No.2さんの方法で。どちらもアリです。ベストアンサーは辞退します。 なおNo.2さんの方法のうち数式によるものについては、いろいろな数式が書けるのですが、他にも例えば、次式でもいいです。 =if(a1="-",,a1) 「-」は、半角モードでタイプしてください。

UMX-11
質問者

お礼

ベストアンサーをご辞退いただいてまでものアドバイス、とても痛み入ります。 さまざま有益な情報をいただきまして、大変ありがとうございました。篤く御礼申し上げます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

「-」を「0」に置換するのではなく、「-0」に置換されてみては如何でしょうか?  尤も、その様な、「手作業による置換」等を行わずとも、途中に「-」が存在したままであっても、処理出来るように関数を組むのが、Excelの本来の使い方ではないかと思います。  例えば、 =A1+1 という関数ですと、A1が「-」の場合には#VALUE!エラーとなりますが、IF関数やISNUMBER関数と組み合わせて =IF(ISNUMBER(A1),A1,0)+1 等の様にしますと、A1セルに「-」を始めとする文字列が入力されていた場合には、態々置換しなくとも、A1セルの値を0に置換した場合と、同じ結果が得られます。  尚、 >これにある関数を施したいのですが と仰っておられる関数がどの様な関数であるのかによって、IF関数を使ったエラーの回避方法が異なってくる場合がありますので、IF関数を使ったエラーの回避についての具体的な方法に関しては、どの様な関数なのかを御教え頂かない事には、回答する事が出来ません。

UMX-11
質問者

お礼

ご丁寧なご回答をいただきまして、ありがとうございました。 今回の質問内容だけでなく、深くエクセルを理解するのに大変参考になりました。 このたびは、どうもありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

置換のダイアログのオプションを開き、完全に同一な時に置換させます。

UMX-11
質問者

お礼

ありがとうございました。内容的には頂いたご回答がまったくそのとおりでベストでした。こんなことも知らないのではいけませんね。 いずれにしてましても大変助かりました。ありがとうございました!

関連するQ&A

専門家に質問してみよう