• ベストアンサー

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でカンマというかんじです。 セルは文字列表示です。あと何桁にも対応できるようにしたいです。 前にも同じような質問しましたがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 横からお邪魔します。 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

meronsodanomu
質問者

お礼

どうもありがとうございます。

meronsodanomu
質問者

補足

myCsvは自分で考えた関数ってことですか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

ユーザー定義関数といいまして 標準モジュールに以下のような形でコードを記述すると 独自関数を作成することが出来ます。 今回の場合は「A1」というセルアドレスを引数として関数に渡し 処理内容の中で受け取った「A1」セルの値を参照して 文字列処理した結果を呼び出し元に返すようになっています。 Function 関数名(引数) ~処理内容~ End Function

meronsodanomu
質問者

お礼

ありがとうございます。 VBAまったくわからないものなので。

全文を見る
すると、全ての回答が全文表示されます。
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

関数でしてたので制限がありましたね。 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

meronsodanomu
質問者

お礼

何桁でも出来ました。ありがとうございます。

meronsodanomu
質問者

補足

format2は自分で考えた関数ってことですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel カンマつけ方

    Excel関数で 1211 010203 1012 12,11 1,2,3 10,12 とやりたいです。 2ケタでカンマ、01だったら0は消して1でカンマというかんじです。 お願いいたします。

  • ふたつめのカンマと3つ目のカンマの文字列を表示させたい

    こんにちは。表題の件質問させていただきます。 EXCELで、Find関数を使い、カンマ区切のデータ中、最初のカンマが見でくる直前のデータを表示させています =IF(セル番地="","",(LEFT(セル番地,FIND(",",セル番地)-1))) が、表題のように、2番目と3番目のカンマの間の文字列を切り出したい、という場合にFIND関数でできなさそうです。 もし知恵を拝借できれば幸いです。 よろしくお願いいたします

  • エクセルの0表示とカンマについて

    Win XP EXCEL2003 です 1.合計が0の時、0を表示しないようにすると 各セルの数値にカンマが入らない。 2.各セルの数値にカンマ入れると、合計が0の時 0を表示してしまう。 各セルの数値にはカンマ入れ、合計が0の場合0を表示しない ようにするには、どのような設定をしたら良いでしょうか

  • Excelの数字の文字列入力で

    Excel2003です。 セルに   "651,652,653" のような3ケタ分の数字とカンマの文字列を入力しようとすると    651652653 という数値にみなされてしまいます。 入力するときに、文字列の先頭に ’ を付けると文字列に みなしてもらえるのですが、つい忘れてしまい面倒です。 セルに指定などで設定する方法は何かありますでしょうか。 よろしくお願いします。

  • Excelでカンマ区切りの文字列をセルに分割する?

     住所録をExcelにコピーしたら、 カンマ区切りに一つのセルに入ってしまいました。 ◇カンマごとに一つのセルに分割して文字列を分ける。 ◇氏と名の間は半角スペースでカンマでは有りませんが、   二つのセルに分ける。 上記について分ける関数を教えてください。    

  • Excelのカンマ区切り

    ="("&ROUND(A1,0)&")" 上記のように四捨五入したあと括弧をつけ、文字として表示しているセルがあります。 これをさらにカンマで区切りたいのです。 FORMAT関数みたいなのがあると思ったらできなくて困っています。 解決法はないでしょうか?

  • エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

    WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

  • EXCELのオートフィルタで、カンマ区切りデータから特定数値を抽出

    一つのセルに、以下のようにカンマ区切りで数値が複数記入されています。 (セルの書式は「文字列」扱い) セル1: 6,10 セル2: 1,9,10,11 セル3: 2,3,11 セル4: 1 これらセルから、オートフィルタを使って"1"が含まれたセルを抽出したいのですが、 オプションを使うと、 「~と等しい」→ セル4しか選択されない 「~を含む」→ セル1~4全部が選択されてしまう となり、また、 プルダウンで"1"を選択 → セル4しか選択されない となります。(EXCEL2003で確認) 希望する動作は、セル2とセル4が選択される状態です。 ちなみに、EXCELは簡単な関数を扱える程度のレベルです。 VBのプログラミング経験はありますが、マクロは組んだことがありません。 よい方法がありましたら、ご教授ください。

  • エクセル:セル内の文字列の最後の「,]を消したい。

    エクセル:セル内の文字列の最後の「,]を消したい。 以下のように、数字(1桁または2桁)がカンマでわかれたデータがあります。 この文字列の中で、一番最後の「,」だけ消したいのですが、 何か良い方法はないでしょうか。 1,1,1,1, ⇒最後のカンマを消したい 1,2,3,4  ⇒カンマがないのでそのままでOK 1,1,2,3,4  1,2,3,   1,11,12,

  • Excelで、ハイフンを消したいけど000は残したい

    A列に、 00033-11-55 00432-12-01 00022-11-56 ・・・・・・ と、5桁-2桁-2桁 の数字がずーっと並んでいます。 これを、B列の、各となりのセルに、 000331155 004321201 000221156 ・・・・・・ というふうに、 ハイフンは消すが、000や00は残した数字を表示させたいです。 単に置換で、「-」を「」に置き換えると、00や000が消えてしまいます。。。。。 A列の、セルの書式設定を文字列にしても駄目でした。 どうすればいいでしょうか? 何かうまい関数などは、ありませんでしょうか?

専門家に質問してみよう