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

マクロ / 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)

  • コメントをどうぞ

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

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


    PAGE TOP ↑