- ベストアンサー
Excelの表示形式
Excelの表示形式で困っています。 例えば、セル上の191.65.1.1の表記を191.065.001.001のように "0"を含めた三桁表示にしたいのですがどなたかおわかりになる方いらっしゃいますでしょうか? マクロを使ってもOKなので、どなたか教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
複数のセルを選択して実行すれば、全部まとめて置きかえるマクロを作ってみました。Alt+F11でVBAの画面を起動し、「挿入」>「標準モジュール」を選択し、以下のマクロをコピーして貼り付けてください。 使い方は、IPアドレスの入力されたセルを選択し、Alt+F8からマクロを実行すると、まとめて3桁表示に変換されます。 Sub Sample() Dim r As Range Dim ip As Variant Dim s_ip As String Dim i As Integer For Each r In Selection s_ip = "" ip = Split(r.Value, ".") For i = 0 To UBound(ip) s_ip = s_ip & Format(ip(i), "000") & IIf(i < 3, ".", "") Next r.Value = s_ip Next End Sub
その他の回答 (6)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
マクロは苦手なんでアレですが、こんな感じでカーソルのあるセル を書き換えちゃうのはいかがでしょう。 Sub separate_IP() Dim i, p As Integer Dim str, ip As String str = ActiveCell.Value & "." For i = 1 To 4 p = Application.WorksheetFunction.Find(".", str, 1) ip = ip & "." & Format(Left(str, p - 1), "000") str = Right(str, Len(str) - p) Next i ActiveCell.Value = Right(ip, Len(ip) - 1) End Sub だれか添削してくれないかな…
お礼
ありがとうございました。とても勉強になりました! 私もマクロは苦手なんで、もっと勉強しなきゃって感じですね。
- ASIMOV
- ベストアンサー率41% (982/2351)
A1=191.65.1.1 とします B1からI1までを作業列として使います(一時的に) B1=F1&"."&G1&"."&H1&"."&I1 C1=FIND(".",$A1) D1=FIND(".",$A1,C1+1) E1=FIND(".",$A5,D1+1) F1=RIGHT("00"&LEFT($A1,C1-1),3) G1=RIGHT("00"&MID($A1,C1+1,D1-C1-1),3) H1=RIGHT("00"&MID($A1,15+1,E1-D1-1),3) I1=RIGHT("00"&RIGHT($A1,LEN($A1)-E1),3) B列に191.065.001.001 が出来ますので、コピー、値のみで貼り付ければどうでしょう
お礼
大変助かりました!!ありがとうございます。 この方法と、上の方に書いてあるマクロを組み合わせたら 自分のやりたい事ができました。
- Pii-suke
- ベストアンサー率16% (1/6)
連続した数字として認識したい場合、 書式のセルで表示形式をユーザー定義にして、 「000"."000"."000"."000」と設定します。
お礼
表示形式を設定後の入力だとウマくいったのですが、 もともとあるデータを加工するので残念ながら。。。 ご回答いただきありがとうございました。
- Rukky
- ベストアンサー率57% (8/14)
JOCXさん、こんにちはぁ。 セル上の191.65.1.1の表記を191.065.001.001のようにするには 表示形式を文字列にすればできると思いますが。 違っていたらすいません。
お礼
Rukkyさん、こんにちは! もともとあるデータを加工するので残念ながら駄目でした。。。 ご回答いただきありがとうございました。
- Pii-suke
- ベストアンサー率16% (1/6)
書式のセルで表示形式をユーザー定義にして 「0」から「000」にすれば3桁になります。
お礼
ご回答いただきありがとうございました。 >191.65.1.1が1つのセル上にある為、表示形式では解決できませんでした。 う~ん、エクセルって難しいですね。。。
こんにちは。 >191.65.1.1 は、ひとつのセルに入力するのですか? それとも、191と65と1と1は「それぞれ別のセルに入力ですか? 別セルであれば、表示形式のユーザー設定で000とすればいいです。 ひとつのセルだと表示形式では無理だと思います。 VBAでの処理になるでしょう。
補足
早速のご回答、ありがとうございます。 >191.65.1.1 は1つのセルに入力されております。 VBAでの処理となる場合、どのようなマクロを作成すればいいのでしょうか?
お礼
大変助かりました!!ありがとうございます。 この方法と、下の方に書いてある関数・計算を組み合わせたら 自分のやりたい事ができました。 しかも、一括で変換できるマクロには感動いたしました。 私ももっと、勉強しなきゃって感じですね。。。