エクセルVBAで配列要素をカンマごとに取り出す方法は?

このQ&Aのポイント
  • エクセルVBAで、配列の要素をカンマごとに取り出す方法を知りたいです。配列の一つずつを&でつなぐのは大変です。
  • 特定の配列要素を取り出す方法も知りたいです。たとえば、配列の前半と後半を2分割したり、前2つと残りの要素を取り出したりしたいです。
  • この質問はレセ電の一環であり、エクセルVBAを使って配列を操作する方法について学びたいと思っています。
回答を見る
  • ベストアンサー

エクセル VBA

先ほどの回答もすごく参考になったのですが、 要素ではなく、カンマごと取り出すという方法はどうすればよいのでしょうか。 V="A,B" W="C,D,E,F,G,H" Splitにパラメーターをつける方法とかあるのでしょうか。 つまり配列の中から、前二つを取り出すとか言う方法なのですが、 配列の一つずつを & でつなぐのも大変そうだし、、、 以下は前回と同文です。 ひとつのセルに A,B,C,D,E,F,G,H と配列があったとします。 そこから、たとえば、前半と後半の2分割とか、 別に、 前2つ、つまりAとBと 残り6つ CからHまでとか 分けて取り出す方法はあるのでしょうか。 これもレセ電の一環です。 すいません。お手数ですが教えていただけると助かります。 よろしくお願いいたします。

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

>そうすると、全部の要素が、Joinされませんか 必要なものだけ配列に取り込んでJoinすればいいのでは?

MrTakuya
質問者

お礼

ご丁寧にご回答いただきありがとうございます。 データは可変です。固定なら、文字数で取り出せますものね。 他の例なら、以前使った A組,32番,山田太郎,男,12歳,45人中35位,性格明るい のような内容が変わるデータでもいいです。 >必要なものだけ配列に取り込んでJoinすればいいのでは とは たとえば32要素の連結なら、 vの配列があればそれをsplitで割って、 roop a=1 to 32 st= st & "," & v(a) next とするのでしょうか。 要領を得ない聞き方ですいません。 それと親切に教えていただきありがとうございます。

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

配列への格納、配列からの取出しの方法です。 Dim mojiA As String Dim haiA As Variant mojiA = "A,B,C,D,E" haiA = Split(mojiA, ",") MsgBox mojiA & vbCrLf & "配列のアイテム数:" & UBound(haiA) & vbCrLf & "一つ目:" & haiA(0) & vbCrLf & "二つ目:" & haiA(1)

MrTakuya
質問者

お礼

参考にさせていただきます。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

疑問なのは例題としてあげている、 >A,B,C,D,E,F,G,H のように、","で区切ると8個になり且つ1個が文字列1つであるという不変なのか、 それともまったく定義のない可変なデータなのかでも変わってきそうな感じですけど。 例えば2分割するなら文字列の長さから出せそうですが、可変すると文字列の長さから 真ん中の位置を割り出す事も無理ですし。 そうすると単純に","を頭から数えていってその位置を割り出すのかな・・・?

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

SplitしたものをJoinするとか。

MrTakuya
質問者

お礼

そうすると、全部の要素が、Joinされませんか

関連するQ&A

  • エクセル VBA

    いつもお世話になっております。 同じような質問で申し訳ありません。 前回の配列のことの続きなのですが、 ひとつのセルに A,B,C,D,E,F,G,H と配列があったとします。 そこから、たとえば、前半と後半の2分割とか、 別に、 前2つ、つまりAとBと 残り6つ CからHまでとか 分けて取り出す方法はあるのでしょうか。 これもレセ電の一環です。 すいません。お手数ですが教えていただけると助かります。 よろしくお願いいたします。

  • 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
  • エクセル VBA

    いつも、皆々様にはお世話になり、大変役立たせていただいております。 エクセルのデータについての質問です。 セルごとに A,B,C,D,E...... イ,ロ,ハ,ニ,ホ,ヘ,ト... と並んでいるデータがあるとします。 それをテキストデータとして取り出して、 A B C D E . . イ ロ ハ . . . と 各データを改行して取り出すことは可能でしょうか。 行列の変換ではありません。 各セルのデータをひとつずつ取り出して、 テキストデータとして1行ずつ取り出す方法なのです。 VBAで別のシートに1個ずつデータを移して、 ちまちまやっていれば出来そうなのですが、 一発でやる方法はないでしょうか。 よろしくお願い申し上げます。 なぜこのようなことが必要かと申しますと、 歯科のレセ電のプログラムの一環であります。

  • VBA

    1 a;b;c;d; 2 e;f;g;h; 3 i;j;k;l; をVBAで   1 a;   2 e;   3 i;   1 b;   2 f;    3 j;   1 c;   2 g;   3 k;   1 d;   2 h;   3 l; としたいのですが、どうしたらいいですか?

  • エクセルVBAについて教えてください

    エクセル2003 シート1     A       B      C 1  3月1日 A 100     *A列はカレンダーコントロールより選択としています 2  4月1日 B 100 3  3月1日 C 200     *B列はコンボボックスより選択としています 4  3月1日 D 200 5  4月1日 E 300     *C列は直接入力としています 6  4月1日 F 300 7  3月1日 G 100 8  4月1日 H 200 9  3月1日 I 200 10  4月1日 J 100 上記シート1の表のC列を下記シート2のC列に条件集計する シート2    A       B       C 1  3月1日   A~E     500    *選択した日付ごと及びA・B・C・D・Eの集計  2  3月1日   F~J     300    *選択した日付ごと及びF・G・H・I・Jの集計     3  4月1日   A~E     400    *選択した日付ごと及びA・B・C・D・Eの集計    4  4月1日   F~J     600    *選択した日付ごと及びF・G・H・I・Jの集計  すいませんが上記コードを教えてください 困ってます よろしくお願いします      

  • ファイルから一行ずつ読み込むとき、@F[0] と $_ は違う?

    データファイルを一行ずつ読み込んで、文字列を一文字ずつコンマ区切りにしたいと思っています。たとえば、   xyz → x,y,z としたいと思っています。 今、data.txt に  abc  defgh という2行が書いてあります。  perl -nla -e '@chars= split(//,@F[1]); print join(",",@chars);' data.txt とすると  a,b,c  d,e,f,g,h という出力が無事に得られました。 どうせ、data.txt は一列しか使っていないので、 @F[0] の代りに $_ を使ってみました。  perl -nle '@chars= split(//, $_); print join(",",@chars);' data.txt しかし、結果は  a,b,c,  d,e,f,g,h, のように、各行の最後に余計なコンマが付いてしまいます。 なぜでしょうか? 一列しかデータがないので、@F[0] と $_ は同じだと思っていたのですが、なにか違うのでしょうか?

    • ベストアンサー
    • Perl
  • エクセルVBAで不一致に空白セルを挿入

    エクセル2010です。 A、B列ともソートされています。 ごく少数ですが同一列内に重複するデータもあります。 そして A列に、1行目からA、B、C、E、F、F、H B列に、1行目からA、B、D、E、F、G、I (カンマは実際にはありません。) というような文字列データがある場合 別シートに A列に、1行目からA、B、C、空、E、F、F、空、H、空、 B列に、1行目からA、B、空、D、E、F、空、G、空、I、 (空は空白セルの意味です。) というように、お互いが一致しない場合は空白で飛ばし、一致するものは同じ行にするにはどのような方法がよろしいでしょうか? 例のように少ないデータなら目で見て手作業でできますが、実際は千件以上のデータです。 VBAでも関数でも結構です。よろしくお願いします。

  • EXCEL VBA 条件による空白挿入

    EXCEL2003を使っています。 以下のように列FGHが空白の行については列ABCを空白を挿入したいのですが数万行あり処理をVBAで自動化したいです。どなたかお力をお貸し下さい。お願いします。 A B C D E F G H 1 1 2 3 4 5 6 7 8 2 1 2 3 4 5 _ _ _ 3 1 2 3 4 5 6 7 8 4 1 2 3 4 5 _ _ _ 5 1 2 3 4 5 6 7 8 ↓ A B C D E F G H 1 1 2 3 4 5 6 7 8 2 _ _ _ 1 2 3 4 5 3 1 2 3 4 5 6 7 8 4 _ _ _ 1 2 3 4 5 5 1 2 3 4 5 6 7 8

  • エクセルにて複数セルの並び替え

    こんにちは、エクセルについて教えてください。列はA~Hまで、行は1~200行ほどに値が入っています。 例えばValueが以下のようだとします。 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 ... これらのValueを、別のSheetに以下のように並び替えたいのですが、 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 A3 B3 ...と、これがA200~H200の行分まで。なのでPaste後は800行になります。どうにかマクロか何かで簡単に 出来ないかと思い、どなたかご教授いただければと思います、よろしくお願いします!

  • Excelの移動しない列

     Excelで表示されている列が左から   A B C D E F ... のとき,右方向にスクロールさせると表示領域が   B C D E F G ... (Aが左に消える)   C D E F G H ... (Bが左に消える) と変化していきます.  ここで,Aをスクロールアウトさせない方法を知りたいと思っています.大きな表を作成したときに,表のどこを見ていても各列が何を表しているかを知りたいからです.  具体的には,右方向にスクロールさせたときに最初に消えるのがAではなく,   A C D E F G ... (Bが消える)   A D E F G H ... (Cが消える) という変化をさせたいと思っています.  どうすればいいのでしょうか.