Excel2010での関数で半角空白にアンダーバーを挿入する方法

このQ&Aのポイント
  • Excel2010での関数を使用して、半角の空白にアンダーバーを挿入する方法を教えてください。
  • 現在、SUBSTITUTE関数を使用して空白を置換していると、全ての空白にアンダーバーが挿入され、望んだ形になりません。
  • 質問箱には括弧内の文字を抽出する関数が多くありますが、半角の空白にアンダーバーを挿入する関数についての情報は見つかりませんでした。
回答を見る
  • ベストアンサー

「""」内にある空白に「_」アンダーバーを挿入

Excel2010での関数の質問です。 │ │ │ │ └─"ABC DE"  ←元データ │ │ │ │ └─"ABC_DE"  ←完成形 「""」内にある半角の空白に「_」アンダーバーを 関数を使って挿入させたいと考えています。 (「""」内の文字は一意ではありません。) =SUBSTITUTE(A11," ","_") を使用したら、全ての空白に「_」アンダーバーが 挿入されてしまい、 │__│__│__│__└─"ABC_DE" になってしまい、「|」の間にも「_」アンダーバーが 挿入されてしまいます。 (「|」と「|」の間は、半角空白が2つ入っています。) 括弧内の文字を抽出なら質問箱に沢山あるのを 確認していますが、括弧内の文字だけを変更は 見当たりませんでした。 「""」内にある半角の空白に「_」アンダーバーを 挿入させる関数をご教授下さい。 よろしくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1481)
回答No.3

関数のみでやってみました。 B11 =FIND("""",A11) C11 =FIND("""",A11,B11+1) D11 =MID(A11,B11+1,C11-B11-1) E11 =LEFT(A11,B11)&SUBSTITUTE(D11," ","_")&MID(A11,C11,100) でE11 に結果が入ります。 これを1つの関数にすると、 =LEFT(A11,FIND("""",A11))&SUBSTITUTE(MID(A11,FIND("""",A11)+1,FIND("""",A11,FIND("""",A11)+1)-FIND("""",A11)-1)," ","_")&MID(A11,FIND("""",A11,FIND("""",A11)+1),100) とやたら長くなります。メンテナンスが大変なので、私ならやりません。 両方とも、""で囲まれたのが1か所だけ、2か所目以降は無視されます。 2か所以上あるなら、VBA を使わないと無理です。 注意:最後の100 は100 文字あれば大丈夫だろうという想像です。文字列が長い場合、最後まで表示されないこともあります。その場合、数字を増やしてください。

saomeet
質問者

お礼

SI299792様。 回答ありがとうございました。 セルのそれぞれに結果を入れるとどう言う動きをするのかが分かり 大変勉強になりました。 関数1つなら理解出来るのですが、ネストになるとお手上げで。 ネストの考え方を勉強する必要があると感じました。 確かに、関数としては「やたら長い」ですが、意図した回答になり 大変満足しています。 ありがとうございました。

saomeet
質問者

補足

意図した回答になったので、 こちらの回答をベストアンサーとさせて頂きます。 ありがとうございました。

その他の回答 (4)

回答No.5

【Excel関数版】"|_"を元に戻す =SUBSTITUTE(SUBSTITUTE(A1, " ","_"), "|_", "| ")  朝に同じ式を書いて数度テストしたのですが首尾良い結果を得られませんでした。そこで、CutStr()を使ってみました。で、夜にもう一度アタック。で、成功。CutStr()よりこっちですね。

saomeet
質問者

お礼

f_a_007様。 3回の回答ありがとうございました。 私の書き方がダメなのか、意図した回答を得る事が出来ませんでした。 何度も回答して下さったのに、ごめんなさい。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

=SUBSTITUTE(A1," ","_",1) をB1に入れる。 A1セルのデータ例 asd fghj (fの前に半角スペース)-->B1の結果 asd_fghj 元データはA1セル。関数式は別セルに入れる(常識)、例B1。 最後の引数の1は、1番目に見つかったものを対象にする。 ーー 2,3番目も可能。その際は同じ関数でネストする。 例 =SUBSTITUTE(SUBSTITUTE(A2," ","_",1)," ","_",1) 他に置き換えた結果を対象にするので第4引数は1でよい。 A2データ例 asd f ghj (fの前後に半角スペース) ー-> asd_f_ghj

saomeet
質問者

お礼

imogasi様。 回答ありがとうございました。 試してみた所、 │__│__│__│__└─"ABC_DE" と、なってしまい意図した結果が得れませんでした。 折角、回答下さったのに私の理解不足だと思います。 ごめんなさい。ありがとうございました。

回答No.2

【訂正】 =CutStr(A1, """", 1) & """" & SUBSTITUTE(CutStr(A1, """", 2), " ", "_") & """" 左右を合成する際の 《& """"》の位置が間違っていました。

回答No.1

 Excel は操作経験のない70歳になる爺ですので考え方だけ・・・  添付図の式は、次のようです。 =CutStr(A1, """", 1) & """" & SUBSTITUTE(CutStr(A1, """", 2) & """", " ", "_") 式では、 1、ダブルクォーテーションの左側と右側に分割。 2、ダブルクォーテーションの右側のみ置換。 3、左側と右側を合成。 しています。  私は、ダブルクォーテーションの左側と右側に分割するのに以下のCutStr()を利用しています。そこをExcelの関数で行えばOKなんではないでしょうか・・・ Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function

saomeet
質問者

お礼

f_a_007様 早々の回答ありがとうございます。 まだ始業前でデスクに付けないので、 始業後試してみます。 ありがとうございました。

関連するQ&A

  • アンダーバーの後の文字を大文字に変えたい

    エクセルの関数について質問です。 アンダーバー_の後の文字を大文字に変えて、 アンダーバー自体は消去したいのですが、作り方がわかりません たとえば、abc_def_ghiの場合ですとabcDefGhiのようなかんじです。 アンダーバーが何個出現するかは一定ではありません。 0個の場合もあります。 ご存知でしたらご教授ください。

  • エクセルでのNULLという文字列挿入について

    エクセルで空白のセルに対してNULLという文字列を挿入したいのですが、 SUBSTITUTE関数を使ってやろうとたらNULLは0と判断されて0が入力されてしまいます。 NULLという意味ではなくて、NULLという文字列そのものを入力するときはどのようにしたらよいのでしょうか?

  • 全角文字と半角文字切れ目に挿入したい

    (任意の)全角文字の次に(任意の)半角文字が続く場合、その間にタブを挿入し、 漢字abc ↓ 漢字     abc (任意の)半角文字の次に(任意の)全角文字が続く場合、その間に改行を挿入したいのですが abc漢字 ↓ abc 漢字 そのようなことができるエディタ等がありましたらお教えください。

  • 置換演算子を使うと空白が入ってしまう

    $test = abcdef; $test =~ s/abc//g; 上記の様に置換演算子を使って文字列の削除を行うと、 「 def」の様に、削除した文字列に半角空白が入ってしまいます。 1回や2回ならよいのですが、何回も処理を行うと、 最終的に大量の空白が挿入されてしまい、大変困っています。 なんとか削除した部分に空白を挿入しない方法はないものでしょうか? 解決法がわかる方がいらっしゃいましたら、御教授頂きたく、 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 秀丸を利用して、空白から空白の間で、正規表現を使う

    秀丸を利用して、空白から空白の間で、正規表現を使いたいのですが、 やりかたが分かりません。 ^半角スペース.+?半角スペース と思ったのですが、違いました。 正規表現を使いたいところは、 こんな感じになってます。 謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい)  謎の空白 半角空白 文字列 謎の空白 半角空白 (行頭からここの文字列の前だけ切りたい)          : てっきり、全角空白かと思い、記号表示させてみたけど、違いました。 次に、タブかな、と思い、記号表示させてみたけど、違いました。 空白って、全角と半角とタブしか思いつかないのですが、 それ以外に何かあるのでしょうか? また、それは、正規表現で、どう扱うのでしょうか?

  • 半角1文字分の空白スペースがない図表番号を作りたい

    Word 2003で「挿入→参照→図表番号」で図表番号を作りましたが、ラベル (「図-」、「表-」など) とその右にある番号 (「2.3」、「5.11」など) との間に空白スペースが半角1文字分常に挿入されます。例えば、 図-2.3 ではなく 図- 2.3 のようになります。 この半角1文字分の空白スペースがない図表番号を作るにはどうしたらいいでしょうか。

  • MYSQLで空白をインポートしたい

    こんにちは。MYSQL5.5を使用しています。固定長のテキストファイルを各フィールドにインポートしたいと思っています。 例えば、10文字目から20文字目は空白(半角スペース)だとします。フィールドXに半角スペース10個をインポートしたいのですが、挿入後の結果を見るとNULLになっています。 これを、半角スペース10個挿入するにはMYSQL側でどのような設定を行う必要があるでしょうか?

    • ベストアンサー
    • MySQL
  • grepで半角空白または行末が続く語を探したい

    grepもしくはegrepで、半角空白または行末が後ろに続くabcという語を探すにはどう表現すればよいでしょうか? 例えば、 $ echo 'abc' | grep 'abc[ $]' では$が行末ではなく$という文字そのものになります。 2014年8月3日

  • メール本文の空白部を詰めないようにするするには?

    メールソフトにサンダーバードを使っています。 本文の空白部を詰めないようにするにはどうしたら良いでしょうか。 例えば送信の時に A 1:Aと1の間は半角で5文字分の空白 B 12:Bと12の間は半角で4文字分の空白 のような本文を送った場合、受信すると空白が詰められて A 1 B 12 のようになってしまいます。

  • sedコマンド 先頭に空白文字を含む行の挿入

    よろしくお願いします。 [やりたい事] linaxサーバで、行の先頭に空白を3個含む文字列aaaを、/tmp/abc.cnfの3行目に挿入したいですが下記[実施コマンド]ではうまくいかず、上手くいくコマンドラインを教えて下さい。 [実施コマンド] sed -e ”3i <space><space><space>aaa” /tmp/abc.cnf [/tmp/abc.cnf]の中身 △△△123 △△△456 △△△aaa ←コマンドで挿入したい △△△666 △△△777 よろしくお願いします

専門家に質問してみよう