[[20020717182730]] 『表示形式について』(ロビンマスク) ページの最後に飛ぶ

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

 

『表示形式について』(ロビンマスク)

 会社で表を作っているのですが,
アイテムNoの表示形式をちょっと変更したいのですが,
上手く出来ません。
 
例えば
 
アイテムNo    品名/リマーク
010101	      りんご
	     (青森産)
010102	     サクランボ
	     (山形産)
 
上記のような表でITEMU Noを
010101を1.1.1のように変更するにはどうしたら宜しいでしょうか?
どなたかご教授ください。

 みやほりんが 未解決ログ解消を目的に 2006/07/13 10:45 ごろ、投稿しました。
 トピ主の[ロビンマスク]さんの投稿は2002/07/17 18:27:30でした。
 
表示形式では相談の件は実現できません。
表示形式では入力のないものに追加して表示することは出来るが、入力のあるものを
途中だけ隠して表示することは出来ないのが理由です。
 
数式によりいったん変換するか、マクロにより値の置き換えをすることになります。
【仮定】
10101という数値を表示形式ユーザー定義 000000 で 010101 と表示している。
 
【数式例】
A2に入力値があるとして、
=INT(A2/10^4)&"."&INT(MOD(A2,10^4)/100)&"."&INT(MOD(A2,100))
 
【マクロ例】
選択範囲を対象とする例
 Sub TEST20060713()
    Dim C As Range
    If TypeName(Selection) = "Range" Then
        For Each C In Selection
            If IsNumeric(C.Value) Then
                Select Case C.Value
                    Case Is < 10000
                        Rem 桁が足りないときの処理
                    Case Is > 1000000
                        Rem 桁が多いときの処理
                    Case Else
                        C.Value = Int(C.Value / 10 ^ 4) & "." & _
                                  Int(Val(Right(C.Value, 4)) / 100) & "." & _
                                  Right(C.Value, 2)
                End Select
            Else
                Rem 数字以外のときの処理
            End If
        Next C
    Else
        Rem Selectionがセル範囲以外のときの処理
    End If
 End Sub
 
(みやほりん)(-_∂)b

 数式案として、
 =SUBSTITUTE(TRIM(SUBSTITUTE(TEXT(A1,"000000"),"0"," "))," ",".")
 というものはどうでしょうか?
 (ROUGE)

 VBA案として
 Sub test()
 Dim r As Range, txt, mItem As Object, m As Object
 With CreateObject("VBScript.RegExp")
     .Pattern = "^\d{6}$"
     For Each r In Selection
       If .test(r.Value) Then
          .Pattern = "\d{2}"
          .Global = True
          Set mItem = .execute(r.Value)
          For Each m In mItem
              txt = txt & Val(m.Value) & "."
          Next
          If Len(txt)>3 Then r.Value = Left(txt,Len(txt)-1)
       End If
       txt = Empty
     Next
 End With
 End Sub
 (seiya)


 もしかしたら、こういうことかもしれませんね。
 =--LEFT(TEXT(A1,"000000"),2)&"."&MID(TEXT(A1,"000000"),4,1)&"."&RIGHT(A1,1)
 (ROUGE)

 これもあり?
=CONCATENATE(--MID(A2,1,2),".",--MID(A2,3,2),".",--MID(A2,5,2))
(sin)

 ご賛同感謝しますです。
でわ。
011010 というデータを想定してテスト。(期待値1.10.10)
 
	みや式	みやVBA	ROUGE1	ROUGE2	seiya	sin    (敬称略)
011010	1.10.10	1.10.10	11.1	1.0.0	011010	11.1.0  数値表示形式000000
011010	1.10.10	1.10.10	11.1	1.0.0	11,1,	1.10.10  文字列
 
(みやほりん)(-_∂)b

 沢山でていますが、文字列の変換ということでしたら、このようにするのもよいようです。 (LOOKUP)
 =SUBSTITUTE(TEXT(A1,"0!.00!.00;;"),".0",".")

 あっ、そういうことでしたか..
 コード修正済み
 (seiya)

 両方という事でしたら、
TEXT(A2,"000000")を使うけど、長ーくなる。。。
(sin)


 LOOKUPさんの数式、スマートですね^^
 (ROUGE)

 >LOOKUPさん
お待ちしていました。
".0" → "." への置換の発想。さすがっ!
「やるからにはベストを」ですね。
 
>seiyaさん
 複数セル範囲選択で実行すると 変数txt が・・・(ごにょごにょ)
(みやほりん)(-_∂)b

 みやほりんさん、毎度!
 修正しておきます。
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


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