- ベストアンサー
Excel またカンマです
Excel関数かマクロで 1211 010203 1012 01020304050607080910 12,11 1,2,3 10,12 1,2,3,4,5,6,7,8,9,10 とやりたいです。 2ケタでカンマ、01だったら0は消して1でカンマというかんじです。 セルは文字列表示です。あと何桁にも対応できるようにしたいです。 前にも同じような質問しましたがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 横からお邪魔します。 No.1さんの二番煎じになりますが、ユーザー定義関数にしてみました。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻り 表示したいセルを選択 → 数式バーに直接入力しても良いのですが、 数式バーの左側の「fx」のアイコンをクリック → 「関数の分類」で「ユーザー定義」を選択 その中にある「myCsv」を選択しOK これで関数の引数ダイアログボックスが表示されますので myRng の欄に参照先セル mySpl の欄に区切りたい桁数を入力しOK フィルハンドルで下へコピー! これで画像のような感じになります。 (A列の表示形式は文字列としています。) Function myCsv(myRng As String, mySpl As Integer) 'この行から Dim k As Integer, str As String, str1 As String If Len(myRng) Mod mySpl = 0 Then For k = 1 To Len(myRng) Step mySpl str = str & Format(Mid(myRng, k, mySpl), "0") & "," Next k myCsv = Left(str, Len(str) - 1) Else str1 = Format(Left(myRng, Len(myRng) Mod mySpl), "0") For k = Len(myRng) Mod mySpl To Len(myRng) Step mySpl str = str & Format(Mid(myRng, k + 1, mySpl), "0") & "," Next k myCsv = Left(str1 & "," & str, Len(str1 & str) - 1) End If End Function 'この行まで ※ 区切りたい桁数を任意で指定できるようにしてみました。m(_ _)m
その他の回答 (2)
- eden3616
- ベストアンサー率65% (267/405)
ユーザー定義関数といいまして 標準モジュールに以下のような形でコードを記述すると 独自関数を作成することが出来ます。 今回の場合は「A1」というセルアドレスを引数として関数に渡し 処理内容の中で受け取った「A1」セルの値を参照して 文字列処理した結果を呼び出し元に返すようになっています。 Function 関数名(引数) ~処理内容~ End Function
お礼
ありがとうございます。 VBAまったくわからないものなので。
- eden3616
- ベストアンサー率65% (267/405)
関数でしてたので制限がありましたね。 VBAで良いのであれば 以下の方法で最下のコードを標準モジュールに登録してください。 http://officetanaka.net/excel/vba/beginner/10.htm =format2(対象のセル) 登録したユーザー定義関数により結果が表示されます。 (VBAコードを標準モジュールに登録してあるブックでしか結果が得られませんので注意してください) ■VBAコード Function format2(tar As Range) As String Dim word As String Dim i As Long word = tar.Value If Len(word) Mod 2 = 1 Then word = "0" & word For i = Int(Len(word) / 2) To 1 Step -1 format2 = Int(Mid(word, i * 2 - 1, 2)) & format2 If i <> 1 Then format2 = "," & format2 Next i Debug.Print format2 End Function
お礼
何桁でも出来ました。ありがとうございます。
補足
format2は自分で考えた関数ってことですか?
お礼
どうもありがとうございます。
補足
myCsvは自分で考えた関数ってことですか?