[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『3桁・4桁・6桁の数字を入力した結果の書き換え』(kinnoji35)
はじめまして
どなたか知っている方がいらっしゃいましたらご教授願います。
例えば
セルに
123と打ったら1・2・3
1234と打ったら1・2・34
12345と打ったら1・2・34・56
の様な結果を出したいのですが
文字の入力数に応じて1桁・1桁・2桁・2桁で点を入力したいです。
時間の入力とかの応用ですかね?
わかり辛い説明で申し訳けありませんが宜しくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
(隠居じーさん) 2018/11/17(土) 22:29
こちらの打ち間違いです。
123456と打ったら1・2・34・56の誤りです。
(kinnoji35) 2018/11/18(日) 04:23
新規BOOKにてお試しを ^^ 。。。 3,4,6.。。。偶数桁なら多分 ^^; 奇数桁なら。。。当然 .? に m(_ _)m きっと、もっとスマートなコードが有ると思いますが。 A列が情報、B列が結果です
A B 1 1 1 2 12 1.2 3 123 1.2.3 4 1234 1.2.34 5 12345 1.2.34.5 6 123456 1.2.34.56 7 1234567 1.2.34.56.7 8 12345678 1.2.34.56.78 9 123456789 1.2.34.56.78.9 10 1234567890 1.2.34.56.78.90
Option Explicit Sub main() Dim i As Long Dim j As Long Dim buf As String Dim rr As Range Dim r As Range Dim y As Long Dim cnt As Long With Worksheets("Sheet1") Set rr = .Range("A1").CurrentRegion rr.Range("B1:B" & rr.Rows.Count).ClearContents Set rr = .Range("A1").CurrentRegion y = 1 For Each r In rr For i = 1 To Len(r) cnt = cnt + 1 Select Case cnt Case 1 To 2 j = 1 Case Else j = 2 End Select buf = buf & Mid(r, i, j) & "." If j = 2 Then i = i + 1 Next i cnt = 0 .Cells(y, 2).NumberFormatLocal = "@" .Cells(y, 2).HorizontalAlignment = xlLeft .Cells(y, 2).IndentLevel = 1 .Cells(y, 2) = Left(buf, Len(buf) - 1) buf = "" y = y + 1 Next r rr.Columns(2).EntireColumn.AutoFit End With End Sub (隠居じーさん) 2018/11/18(日) 07:35
どのセルに打ったら、どのセルに結果をだしたいのでしょうか?
実際の操作がイメージできるように説明いただけますか。
(マナ) 2018/11/18(日) 09:56
3桁・4桁・6桁の3パターンだけだったらA列に数字が入っているとして =TEXT(A1,CHOOSE(LEN(A1),,,"0・0・0","0・0・00",,"0・0・00・00")) (bi) 2018/11/18(日) 10:28
=TRIM(SUBSTITUTE(TEXT(A1,"?・??・??")," ・",""))
※ 3,4,6桁限定 (GobGob) 2018/11/19(月) 09:14
あ、桁区切り勘違いしてましたw 回答無視してくださいw (GobGob) 2018/11/19(月) 09:16
=LEFT(TEXT(LEFT(A1*1000,6),"0・0・00・00"),LEN(A1)+LEN(A1)/6+2) ※仕切り直しw (GobGob) 2018/11/19(月) 09:31
=IFERROR(VALUE(MID(A1,1,1)),"")&IFERROR("・"&VALUE(MID(A1,2,1)),"")&IFERROR("・"&VALUE(MID(A1,3,2)),"")&IFERROR("・"&VALUE(MID(A1,5,2)),"")
あと、「知っている方」という尋ね方は気に障るので、避けた方が良いかと思います。(「知っている」回答をしたのではなく、貴方の質問を見てから「考えた」のだから)
(???) 2018/11/19(月) 09:40
Dim i As Long, s As String If Target.Count <> 1 Then Exit Sub If Len(Target.Value) > 6 Or Len(Target.Value) < 1 Then Exit Sub Application.EnableEvents = False For i = 1 To Len(Target.Value) s = s & Mid(Target.Value, i, 1) If i <> Len(Target.Value) And (i = 1 Or i = 2 Or i = 4) Then s = s & "・" Next i Target.Value = s Application.EnableEvents = True End Sub (mm) 2018/11/19(月) 13:48
>わかり辛い説明で申し訳けありませんが
ホントだね。 他の人の結果は見てませんが、こんな感じなんですかねぇ? ちゃんしたと法則を書かないで、微々たる事例で判断させようとするからだね・・・。 私は考える気ないけど。
1 1 12 1・2 123 1・2・3 1234 1・2・34 12345 1・2・34・5 123456 1・2・34・56 1234567 1・2・34・56・7 12345678 1・2・34・56・78 123456789 1・2・34・56・789 1234567890 1・2・34・56・789・0 1234567890a 1・2・34・56・789・0a 1234567890ab 1・2・34・56・789・0ab 1234567890abc 1・2・34・56・789・0ab・c 1234567890abcd 1・2・34・56・789・0ab・cd 1234567890abcde 1・2・34・56・789・0ab・cde 1234567890abcdef 1・2・34・56・789・0ab・cde・f 1234567890abcdefg 1・2・34・56・789・0ab・cde・fg 1234567890abcdefgh 1・2・34・56・789・0ab・cde・fgh 1234567890abcdefghi 1・2・34・56・789・0ab・cde・fghi 1234567890abcdefghij 1・2・34・56・789・0ab・cde・fghi・j 1234567890abcdefghijk 1・2・34・56・789・0ab・cde・fghi・jk 1234567890abcdefghijkl 1・2・34・56・789・0ab・cde・fghi・jkl 1234567890abcdefghijklm 1・2・34・56・789・0ab・cde・fghi・jklm 1234567890abcdefghijklmn 1・2・34・56・789・0ab・cde・fghi・jklm・n 1234567890abcdefghijklmno 1・2・34・56・789・0ab・cde・fghi・jklm・no 1234567890abcdefghijklmnop 1・2・34・56・789・0ab・cde・fghi・jklm・nop 1234567890abcdefghijklmnopq 1・2・34・56・789・0ab・cde・fghi・jklm・nopq 1234567890abcdefghijklmnopqr 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・r 1234567890abcdefghijklmnopqrs 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rs 1234567890abcdefghijklmnopqrst 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rst 1234567890abcdefghijklmnopqrstu 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu 1234567890abcdefghijklmnopqrstuv 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu・v 1234567890abcdefghijklmnopqrstuvw 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu・vw 1234567890abcdefghijklmnopqrstuvwx 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu・vwx 1234567890abcdefghijklmnopqrstuvwxy 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu・vwxy 1234567890abcdefghijklmnopqrstuvwxyz 1・2・34・56・789・0ab・cde・fghi・jklm・nopq・rstu・vwxyz
(BJ) 2018/11/19(月) 14:35
(もこな2 ) 2018/11/19(月) 18:51
>文字数が3,4,6のときをselect caseで分岐するだけですむんじゃなかろうか
私としては、それは避けたかったです。 そもそも、「入力したいです。」と言うことでそちら希望なんでしょうけど。 (BJ) 2018/11/19(月) 20:17
Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRNG As Range
Application.EnableEvents = False For Each MyRNG In Target If IsNumeric(MyRNG.Value) Then Select Case Len(MyRNG.Value) Case 3: MyRNG.Value = Format((MyRNG.Value), "0・00") Case 4: MyRNG.Value = Format((MyRNG.Value), "0・0・00") Case 6: MyRNG.Value = Format((MyRNG.Value), "0・0・00・00") End Select End If Next Application.EnableEvents = True End Sub
(もこな2) 2018/11/19(月) 21:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.