- ベストアンサー
Excel2010での関数で半角空白にアンダーバーを挿入する方法
- Excel2010での関数を使用して、半角の空白にアンダーバーを挿入する方法を教えてください。
- 現在、SUBSTITUTE関数を使用して空白を置換していると、全ての空白にアンダーバーが挿入され、望んだ形になりません。
- 質問箱には括弧内の文字を抽出する関数が多くありますが、半角の空白にアンダーバーを挿入する関数についての情報は見つかりませんでした。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
関数のみでやってみました。 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 文字あれば大丈夫だろうという想像です。文字列が長い場合、最後まで表示されないこともあります。その場合、数字を増やしてください。
その他の回答 (4)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- imogasi
- ベストアンサー率27% (4737/17069)
=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
お礼
imogasi様。 回答ありがとうございました。 試してみた所、 │__│__│__│__└─"ABC_DE" と、なってしまい意図した結果が得れませんでした。 折角、回答下さったのに私の理解不足だと思います。 ごめんなさい。ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【訂正】 =CutStr(A1, """", 1) & """" & SUBSTITUTE(CutStr(A1, """", 2), " ", "_") & """" 左右を合成する際の 《& """"》の位置が間違っていました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
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
お礼
f_a_007様 早々の回答ありがとうございます。 まだ始業前でデスクに付けないので、 始業後試してみます。 ありがとうございました。
お礼
SI299792様。 回答ありがとうございました。 セルのそれぞれに結果を入れるとどう言う動きをするのかが分かり 大変勉強になりました。 関数1つなら理解出来るのですが、ネストになるとお手上げで。 ネストの考え方を勉強する必要があると感じました。 確かに、関数としては「やたら長い」ですが、意図した回答になり 大変満足しています。 ありがとうございました。
補足
意図した回答になったので、 こちらの回答をベストアンサーとさせて頂きます。 ありがとうございました。