Articles

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

この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

関連記事[自分で関数を作ってみる

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


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

20-1.jpg

上のように1つのセルに文字がずら~っと打たれている。
  • これを指定バイト数の所で区切りたい!
  • さらに句読点で区切りたい!
    という場合の関数を作ってみます。



    引数

    引数(ひきすう)・・・関数の後ろの括弧内の事を言います。SUMであれば、SUM(A1:A4)の様にA1:A4が引数と言います。(いんすうと読んでいましたがどうやらひきすうと読むらしい)

    引数を使って、文字列・指定バイト数・文字列の前か後ろかの判定をします。

    '「前後」引数は0=前、1=後
    Function B_Split(文字列, 区切バイト数, 前後)

    x = LeftB(文字列, 区切バイト数)

    '区切バイト数手前の句読点を検索しその場所をintSrchに返す
    intSrch = InStrRev(x, "、")
    If intSrch < InStrRev(x, "。") Then
    intSrch = InStrRev(x, "。")
    End If

    '区切り位置内に句読点が無い場合、区切バイト数で区切る
    If intSrch = 0 Then
    intSrch = Len(x)
    End If

    '前後判定し、intSrchの場所で区切る
    If 前後 = 0 Then
    y = Left(文字列, intSrch)
    Else
    y = Right(文字列, Len(文字列) - intSrch)
    End If

    B_Split = y

    End Function


    今回は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)

    関連記事




    この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する
  • トラックバック一覧

    コメント一覧

    コメント投稿フォーム
    Name
    Subject
    Mail
    URL
    Comment

    Password
    Secret
    管理者にだけ表示を許可する

    Navigations, etc.

    Navigations

    ブログ記事を検索

    SPONSORS

    人気記事ランキング

    ブログパーツ

    メールフォーム

    名前:
    メール:
    件名:
    本文:

    Tweet

    最新記事