• ベストアンサー

split関数について

split関数についての質問なんですが・・・。 例えば moji=A\B\C\\ a=split(moji,\') としたときにの Ubound(a)=3 ではないのでしょうか? どうも、Ubound(a)=2となるのですが・・・。

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

  • ベストアンサー
回答No.3

こんにちは 当方のVB6SP5でテストしたところ moji = "A\B\C\\" a = Split(moji, "\") b = UBound(a) bは4となり a(0)はA a(1)はB a(2)はC a(3)はスペース a(4)はスペース となりました。 答えになってませんが、ご参考にして下さい

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 試したら、UBound(a) = 4 になったんですけど。 区切り文字"\"が4つあるので、配列の要素数は5で、添え字が0から始まる場合は、UBoundは4になると思うのですが。(a(3)とa(4)は""が格納される。)

noname#25358
noname#25358
回答No.1

 VBはほとんど使わないんですが……。  UBOUND は配列の添え字の最大値を取る関数です。  配列は1からではなく、0から始まるので、2でよかったはずです。  0、1、2の3つ。

関連するQ&A

  • split関数について・・・

    split関数について・・・ split関数を使いたいのですが、 どうかいていいかわかりません Perl言語を使用してます、 どなたか、回答おねがいします 試してみましたが、プログラムが終了して しまいます、ボットで使おうと思ってるのですが

    • ベストアンサー
    • Perl
  • vba split関数 コンマ区切り

    エクセルに不慣れなため教えていただけたら幸いです。 A3~A11・B3~B11・C3~C11列にコンマ区切りの数字があります。 列によってはコンマで区切られた数字が3つのものと4つのものが混在しています。 split関数でコンマ区切りの数字を分割してE~H列・J~M列・O~R列に表示したいと考えています。 先ほど別の質問で下記のマクロを教えていただいたのですが、 その際は、A1~A9にあるものをD~G列に表示するというものでした。 よくよく考えると、A列のみではなく、B・C列と複数の列を コンマ区切りしたいと考えています。 このような場合は、どうしたらよいでしょうか。 vba不慣れなためわかりづらかったら申し訳ありません。 お分かりになられるかたがいらっしゃいましたら教えていただけますでしょうか。 よろしくお願いいたします。 Option Explicit ' Sub Macro1()   Dim Rout As Long   Dim Colu As Integer   Dim Expression As Variant '   For Rout = 1 To Cells(Rows.Count, "A").End(xlUp).Row     Expression = Cells(Rout, "A")     Expression = Split(Expression, ",") '     For Colu = 0 To UBound(Expression)       Cells(Rout, Colu + 4) = Expression(Colu)   Next Colu, Rout End Sub

  • 拡張Split関数の出力をセルに

    以下をネットでみつけました。 https://vbabeginner.net/multiple-split/ Splitの拡張関数で区切り文字を複数指定できるので便利だと思いました。 記事では、結果を「Debug.Print」でイミディエイトウィンドウに出力していますが 関数なのでエキセルのシートのセルにも出力させる事ができると思うのですが どうやったら良いですか? 記事のようなSUB(SpritExTest())を作成すれば良いのでしょうが 関数なので汎用で利用できないかと考えました。 例えば、シートで A1: AAAA/BBBB*CCCC/DDDD*EEEE だとして B1:SplitEx(A1,Array"/","*"))と入力すれば 例えば以下のように右側に表示される C1:AAAA D1:BBBB E1:DDDD F1:EEEE これができれば、B1の式を下方向にコピペすると C、D,E,F列に A列の同じようなセルがあれば連続して分割処理(出力)される

  • splitの逆関数

    $textに"A,B,C,D"という文字列があったとして、 次に配列@eigoに @eigo=split(/,/, $text)という操作をすると[A B C D]という4つの要素の配列になりますよね。 では、逆に、@eigo_2という[E F G H]という要素4つの配列があったとして、 それを要素ごとに「,」で区切った文字列$text_2="E,F,G,H"に変えることは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • split関数で区切り文字がない場合

    b=111.222 a = split(b , ".") ⇒ a(0) = 111 a(1)=222 b=333 a = split(b , ".") ⇒ a(0) = 333 a(1)=333 このような結果が得られるのでしょうか。 それとも区切り文字がない場合、a(0)、a(1)を使用するとコンパイルエラーでしょうか。

  • Excel 指定文字列でSPLIT

    いつもお世話になっております。 前も同じことで質問させていただきましたが、 再度質問させて頂きます。 http://okwave.jp/qa/q8452163.htm 過去 「--------------------------」でくくってある部分ごとに、セルに書き出したい (テキストボックス) と質問しました。 しかし、テキストボックスではエラーが出て、 リッチボックスを使おうと試みるも色んな問題が出てきてしまった為… 結局、テキストボックスに書き込むはずだった内容を部分をセルに書くことにしようと思っています。 テキストボックスでやりたかった理由ですが、 書式設定がなくなる上、タブとか?色々消えるので テキストボックスで行いたかったのです。 また、ダブルクリックをして入力するのも面倒になってしまうので テキストボックスでやろうとしていました。 やりたいこと ● 全データをA1に貼り付ける (ユーザーが自分で行います) ● そのデータはSheet2のA1に保管(履歴をどんどん保持していきます。 ● ユーザーが貼り付けたA1のデータを「--------------------------」でSPLITし、変数に格納 ● B列に配列内容ひとつずつ貼り付けて?入力していきます。 ● 更にその内容をSPLITしていきます。「*************************」とかで。 ● それをC列に切り取り、貼り付け?していきます。 例) A1セル -------------------------- ああああああああああああああ あああああああああああ あああああああああああああ ああああああああああああ ************************* いいいいいいいいいいい いいいいいいいいいいいい いい いいいいいいいいいいいいいいい -------------------------- ううううううう うううううううううううう うううううううううううううう うううううう ************************* ええええええええええ えええ ええええええええ え -------------------------- ↓マクロ実行後 A B C 1 "-------------------------- ああああああああああああああ あああああああああああ あああああああああああああ ああああああああああああ ************************* いいいいいいいいいいい いいいいいいいいいいいい いい いいいいいいいいいいいいいいい -------------------------- ううううううう うううううううううううう うううううううううううううう うううううう *************" "ああああああああああああああ あああああああああああ あああああああああああああ ああああああああああああ" "いいいいいいいいいいい いいいいいいいいいいいい いい いいいいいいいいいいいいいいい" 2 "ううううううう うううううううううううう うううううううううううううう うううううう" "ええええええええええ えええ ええええええええ え" (エクセルに貼り付けると分かりますが、 A1に元データ、 B1にああああああああああああ C1にいいいいいいいいいいいいい B2にうううううううううううう C2にえええええええええええええええ が入ります。 Private Sub TEST() Dim a With Worksheets("Sheet1") Worksheets("Sheet1").Select a = Split(.Range("A1"), "--------------------------") .Range("B1").Resize(UBound(a), 1) = Application.Transpose(a) .Range("B1").Delete shift:=xlShiftUp a = Split(.Range("B1"), "*************************") .Range("C1") = a(0) .Range("D1") = a(1) a = Split(.Range("B2"), "*************************") .Range("C2") = a(0) .Range("D2") = a(1) End With End Sub 試しに作成してみましたが、 一応思ったとおりの結果が出ました! しかし、一つ一つ遣っていくわけにもいかないので ループする必要がありそうです… 行数を.rowで取得すれば上手くいくかもしれませんが、 もう少し効率の良い方法もありそうな気がしてなりません。 色々分かりにくくて申し訳ありませんが、 回答いただけると嬉しいです。

  • 関数の作り方教えてください

    A1・B1のセルにそれぞれ"98,-189"","と入力されている場合、A1セルの-189を抜き出すためにC1セルに組み合わせ関数を  =right(A1,Len(A1)-Find(B1,A1))と入力すると-189が 抜き出す事が出来るが、これをユーザー定義として以下の様に関数を作成するとコンパイルエラーがでます。 Function moji_nuki(対象 as string,検索文字 as string) moji_nuki=right(対象,Len(対象)-find(検索文字,対象)) End Function 関数を並べているだけですがsub Functionが定義されていないとエラーメッセージがでるのは何故か、何方か教えてください。ちなみにEXCEL2002です。よろしくお願いします。

  • splitを使おうとしてるのですがうまく行きません

    splitを使おうとしてるのですがうまく行きません A 100 A 150 B 800 A 123 A 213 B 121 のようにtxtファイルで保存しているのですが2列目の100,800,213だけを表示したいのですがやり方がわかりません。 また、100と800と213を足すなどの処理もしたいのですが詳しい方教えてください。 txtファイルは空白で区切られています。

  • 文字列の分割について

    VB初心者です。 以下のように文字列を分割したいのですが <やりたいこと> MOJI="A","B","C,D,E" ↓ ARRAY(0)="A" ARRAY(1)="B" ARRAY(2)="C,D,E" ARRAY=SPLIT(MOJI,",") ではだめですよね。 何か、簡単なやり方はありますか? よろしくお願いします。

  • split と 正規表現による分割

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=964020 にて同じような質問をしたのですが、ご回答と自分での検証で食い違いが起きたので質問させていただきます。 splitを用いた分割と正規表現を用いた分割のどちらが速いかというものです。 #####test.txt### ... <!--line--> ... <!--line--> .... ################ というファイルを$lineという変数に入れ、 ********************************************** sub seiki { my $a,$b,$c; if($line=~ /(.*)<!--line-->\n(.*)<!--line-->\n(.*)/s){ $a=$1; $b=$2; $c=$3; } ********************************************** と ********************************************** sub split { my($a,$b,$c){split("<!--line-->\n",$line);} } ********************************************** をBenchmarkモジュールを用いて、速度比較をしてみたところ、splitの方が4倍程速い結果が出ました。実際に用いたtest.txtのサイズは10KBです。 前回質問したときのご回答では、正規表現のほうが早いというご意見をいただいたのですが、本当のところはどちらなのでしょうか

    • ベストアンサー
    • Perl

専門家に質問してみよう