No.1
- 回答日時:
文字列3番目ごとにコロン「挿入」としながら、例には「.」があるのに、置換後では「:」になっていますが?
また、変換前の文字列の文字数は固定?不定?
固定なら関数一発でできますが、不定ならマクロで関数を作らないとダメかも。
ということで、補足をお願いします。
No.2
- 回答日時:
Sub test01()
Dim s As String
Dim sh As String
a = "0000.1111.2222.3333"
Cells(1, "A") = a
'-------セルから値取得-
a = Cells(1, "A")
'--.を取り除く
s = Replace(a, ".", "")
MsgBox s
'--2バイトごとに:を挿入
sh = ""
For i = 1 To Len(s) Step 2
sh = sh & Mid(s, i, 2) & ":"
Next i
'---最後の:を取り除く
sh = Mid(sh, 1, Len(sh) - 1)
MsgBox sh
'-----セルに値設定
Cells(2, "A") = sh
End Sub
MsgBox は用済み後省くこと。
No.3ベストアンサー
- 回答日時:
ひとつのセルの文字列を変換して、右隣のセルに書き出す。
Sub sample()
Dim t As String
Dim i As Long
t = ActiveCell.Text
t = Replace(t, ".", "")
For i = Len(t) - 1 To 3 Step -2
t = WorksheetFunction.Replace(t, i, 0, ":")
Next i
ActiveCell.Offset(0, 1).Value = t
End Sub
選択範囲の文字列を置換して、右に書き出す。
Sub sample2()
Dim t As String
Dim i As Long
Dim rng As Range
For Each rng In Selection
t = rng.Text
t = Replace(t, ".", "")
For i = Len(t) - 1 To 3 Step -2
t = WorksheetFunction.Replace(t, i, 0, ":")
Next i
rng.Offset(0, 1).Value = t
Next
End Sub
んで、逆。
Sub sample3()
Dim t As String
Dim i As Long
Dim rng As Range
For Each rng In Selection
t = rng.Text
t = Replace(t, ":", "")
For i = Len(t) - 3 To 3 Step -4
t = WorksheetFunction.Replace(t, i, 0, ".")
Next i
rng.Offset(0, 1).Value = t
Next
End Sub
No.4
- 回答日時:
ユーザー定義関数を使う方法です。
書式: StrSprit(文字列式1,数値1,文字列式2)
引数1:「文字列式1」には、置換する文字列を含む文字列式を指定します。
引数2:「数値1」には、何文字おきに区切るかを数値で指定します。
引数3:「文字列式2」には、挿入する区切り文字列を文字列式で指定します。
戻り値: 「文字列式1」を既存区切り文字を除き、「数値1」で指定した文字数ごとに
「文字列式2」で指定した区切り文字を挿入します。
使用例1:
StrSprit("0000.1111.2222.3333",2,":") ----> 00:00:11:11:22:22:33:33
使用例2: セルA1に "0000.1111.2222.3333" が入力されているとき、
=StrSprit(A1,2,":") -------> 00:00:11:11:22:22:33:33 が表示されます。
コードの設定方法
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
(必要により、コードの5行目で「既存区切り文字」を追加/変更します。)
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
「中」にして[OK]します。
こんな感じで如何でしょうか?
Function StrSprit(Org As String, N As Integer, S As String) As String
Dim Ar
Dim C As Integer
Dim ResStr As String
Ar = Array(".", ",") ' <---- 既存区切り文字(複数指定可)
For C = 0 To UBound(Ar)
Org = Replace(Org, Ar(C), "")
Next C
For C = 1 To Len(Org)
ResStr = ResStr & Mid(Org, C, 1)
If C < Len(Org) And C Mod N = 0 Then ResStr = ResStr & S
Next C
StrSprit = ResStr
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelのmatch関数エラー原因が...
-
Excelからテキストへのコ...
-
エクセルでセル内の一部を一括...
-
企業名簿で(株)や(有)を無視し...
-
WordからExcelへの変換(1文1...
-
置換機能を使わずに先頭に「'」...
-
エクセルのセルの中の,よりも前...
-
エクセルの関数で、記号などを...
-
excelで可視セルのみ置換
-
エクセルから .txtで保存すると...
-
エクセルで「4」「9」抜けの...
-
VBAでの日付の置換方法を教えて...
-
Excelで、半角スペースをTABに...
-
エクセルの数字だけを削除したい
-
エクセルでカンマ区切りのまま...
-
エクセルの表ををメモ帳などに...
-
Excelの入力済みセルに一括で、...
-
エクセルでセルの書式がJと数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelのmatch関数エラー原因が...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルの中の,よりも前...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
置換機能を使わずに先頭に「'」...
-
Excelで、半角スペースをTABに...
-
【エクセル】ピボットテーブル...
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
Excelのシートにある1行...
-
エクセルの表ををメモ帳などに...
-
小数点を消す方法
-
Excelで電話番号などの-(ハイ...
-
Excelのアポストロフィーの削除
-
Excel "~区"のみを削除したい
-
エクセルでセル内の一部分だけ...
-
一括でダブルクリックした状態...
おすすめ情報