[[20041111162431]] 『置換するには』(ジェイス) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『置換するには』(ジェイス)

 セルに 24-5 と入っている場合に、24番5と表示させることはできるでしょうか?
 「56-6なら56番6」となるように 「-」を「番」に置き換えたいのです。
 そして「24」という「-」が入っていないものを「24番」となるようにしたいです。
 質問攻めですが、

 24       24番     
 546-3   546番3
 11-5     11番5

 と番で揃えれるように出来るでしょうか?宜しくお願いします。

 表題にもあるように「置換え」機能を使います。
後半の質問はVBAになりそうな気が・・・
(ケン)誰かのお答えをお待ちください。

 =IF(ISERROR(FIND("-",C1,1)),C1&"番",A)

 中途半端ですが・・・
 Aには 33-3の場合の変換をいれてくださいなぁ

 これを対象の横にでもつくってコピーってのはだめですかね?

 置換よりはややこしいですけどこれしか思いつかないです

 (Null)


 衝突しました。Nullさんに合わせて、C1セルにデータがあるとして、こうかな?(純丸)

 =IF(C1="","",IF(ISERROR(FIND("-",C1,1)),C1&"番",SUBSTITUTE(C1,"-","番"))) 


 >後半の質問はVBAになりそうな気が・・・
 マクロを使うとこんな幹事ですかね?.。.:*・゜゚・(´ー`).。*・゜゚・*:.。.
 Sub test()
 Dim c As Range
 Dim t As String
 For Each c In Selection
     If InStr(c.Value, "-") = 0 Then
         c.Value = c.Value & "番"
     Else
         c.Value = Replace(c.Value, "-", "番")
     End If
 Next
 End Sub
 (Null)

 こんなんでどうでっしゃろ
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&REPT("-",LEN(A1)),"-","番",1),"-"," ",1),"-","")
懲りすぎかな?
(みやほりん)
ちょっと訂正。「番」で揃えるも考慮。
MS ゴシックなどの等幅フォント、配置を右揃えでお試しください。


 私事ですが・・・
REPT("-",LEN(A1)の部分の役割ってなんですか?
考えたのですが分かりませんでした
できれば解説をおねがいいたします。

(Null)


 A1〜A5に元データがあるとします。
 [-の右側が必ず1桁の場合]
 ・B1に =IF(ISNUMBER(FIND("-",A1)),SUBSTITUTE(A1,"-","番"),A1&"番 ") とします。
 ・B1の書式は等幅フォントの右揃えとします。
 ・B1をB2〜B5へコピーします。

 [-の右側の桁数が不明な場合]
 ・B1に下記数式を入力し、ShiftとCtrlを押しながらEnterで確定して配列数式にします。

=REPT(" ",MAX(LEN(LEFT($A$1:$A$5,FIND("-",$A$1:$A$5&"-")-1)))-LEN(LEFT(A1,FIND("-",A1&"-")-1)))&IF(ISNUMBER(FIND("-",A1)),SUBSTITUTE(A1,"-","番"),A1&"番")

 ・B1のフォントを等幅フォントの左揃えに設定します。
 ・B1をB2〜B5へコピーします。
(Yosh!)

 みやほりんです。
失敗しました、前掲の式は忘れて下され。
どの値にも最後にスペースが追加されちゃいますね。
検証ががうまくいってなかったです。ゴメンナサイ。
REPTは最後に"-"を""に置き換えることでIF関数使わないで
参照セル空白時の対策をねらったものでしたが、本体の処理で失敗。
(みやほりん)

 データが無いときに必要だったんですねぇ(≧∇≦)b
 ぜんぜんきにしてませんでしたorz
 了解です。(みやほりん)さんありがとうございます
 (Null)

 リトライ版。A1〜Anにデータが入力されているとして、
=SUBSTITUTE(A1,"-","番",1)&REPT("番 ",ISNUMBER(--SUBSTITUTE(A1,"-","番",1))*1)
表示条件
・ "-"の右側が必ず1文字
・ 「番」を表示する列が右寄せ、等幅フォント
(みやほりん)

 本題の路線からそれますが・・・

 >・ "-"の右側が必ず1文字 
 上の条件の回避策として下の条件をプラスしてみるかと・・・
 @=任意の範囲
 =MAX(IF(ISERROR(FIND("-",@)),0,LEN(@)-FIND("-",@)))
 すいません余談でした。
 (Null)

 試しに書いてみました。
 こういうものは、どうでしょう?-の前後には、4桁以内という条件です。     (LOOKUP)

 Sub Macro1()
    Dim R As Range
    Dim L As Long
    Dim X As Variant
    Selection.NumberFormatLocal = "@"

    For Each R In Selection
    X = R.Value

    R.Value = Format(Application.WorksheetFunction. _
    Substitute(R.Value, "-", "."), "0.####")

    If Not IsNumeric(R.Value) Then
    R.Value = X: GoTo MUSI
    End If

    L = Application.WorksheetFunction.Find(".", R.Text) - 1

    If L > 4 Then
    R.Value = X: GoTo MUSI
    End If

    R.Value = Application.WorksheetFunction.Substitute(R.Value, ".", "番")
    R.NumberFormatLocal = Application.WorksheetFunction.Rept("_0", 4 - L) & "@"
 MUSI:
    Next
 End Sub

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.