セルにある文字列を分裂させる

マクロ / VBA

関連記事[自分で関数を作ってみる
上記の記事でユーザー定義関数の設定について書きました。
じゃあどんな関数を作ったらいいのか?標準関数に出来ない事ってなによ?ということで、ここでユーザー定義関数を一つご紹介。

1つのセルに長文が・・・

20-1.jpg

上のように1つのセルに文字がずら~っと打たれている。

  • これを指定バイト数の所で区切りたい!

  • さらに句読点で区切りたい!
    という場合の関数を作ってみます。

    引数

    引数(ひきすう)・・・関数の後ろの括弧内の事を言います。SUMであれば、SUM(A1:A4)の様にA1:A4が引数と言います。(いんすうと読んでいましたがどうやらひきすうと読むらしい)
    引数を使って、文字列・指定バイト数・文字列の前か後ろかの判定をします。

    今回はB_Splitという名前の関数にしてみました。
    セルに入力するのは「=B_Split(A1,50,0)」という形になります。

    VBAの解説

    ※バイト数で区切りますので全角文字は2バイトという事を念頭に置いてください。
    Function B_Split(文字列, 区切バイト数, 前後)
    関数の定義Functionです。関数名とその後ろの引数を定義します。
    x = LeftB(文字列, 区切バイト数)
    文字列の左から区切バイト数分だけを切り取ります。
    例:「LeftB(“あいうえお”,6)」であれば「あいう」がxに入ります。
    intSrch = InStrRev(x,”、”)
    文字列xを最後から検索を開始して初めて”、”が見つかった位置を頭から数えて何文字目かをintSrchへ入れます。
    “。”についても同様に検索し、”、”とどちらが最後の方にあるかを判定しています。
    あとは前後という判定フラグを使用し、0であれば文字列の前半、1であれば後半を返します。
    20-2.jpg
    A6セルには「=B_Split(A1,A2,1)

  • コメントをどうぞ

    メールアドレスが公開されることはありません。

    STDEV NA() バーコード VLOOKUP クイズ SUM 作業効率UP 配列数式 フロー図 封筒 検索 印刷 SUMIF チルダ 標準報酬月額 テンプレート XLSTART コピペ 偏差値 目標 ネットプリント ワイルドカード 図形 コンビニ TODAY 条件付き書式 COUNTIF COLUMN 履歴書 無料
    • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
      システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
      詳しいプロフィール


    PAGE TOP ↑