• ベストアンサー

"/"でセル内の文字を縦に分割するマクロについて

マクロ作成の為に、ご協力下さい。 このようなデータが1つのセル内にあります。 aaaa/bbbb/cccc/dddd このセルに対して、"/"があったら下のセルに入力するようにしたいです。 aaaa bbbb cccc dddd どのようにしたら良いか見当がつきません。。。 よろしくお願いいたします。 ※区切り位置の機能を縦に使うようなイメージです。

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

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

#1です。 >v = Split(Range("A1").Value, "/") 変数vにSplit関数にて"/"で区切られた配列を格納します。 この場合 v(0)="aaaa" v(1)="bbbb" v(2)="cccc" v(3)="dddd" となります。 >Range("A2").Resize(UBound(v) + 1).Value Resize(行、列)で、A2からのセル範囲を変更します。 今回の場合行方向に増やしますので、Resize(行,1)或いはResize(行)となります。 ⇒列方向なら、Resize(1,列)或いはResize(,列)となります。 ","のつけ方に気をつけて下さい。 >Resize(UBound(v) + 1) 行方向に増やす場合ですが、Ubound関数では添字「()内の数」の最大値を求めます。 ただし、今回は0~3までの内での最大値になりますので3ですが、データ数は4こありますので +1をしてセル範囲をA2~A5としてます。 >= Application.Transpose(v) 先のセル範囲に対して変数vを代入していきますが、そのままではvは横方向だけにしか データをきちんと出すことができません。 ⇒Range("A2").Resize( ,UBound(v) + 1).Value = v  とやってみるとA2より右に代入します。  列方向に代入するなら = v でいけます。 そこで方向を変えるために、TRANSPOSE関数(ワークシート関数)を呼び出します。 ⇒Application.が呼び出している物です。 セル範囲を指定して「コピー」右クリックで「形式を選択して貼り付け」 にある「行列を入替える」と言う感じの作業です。 ワークシート関数を使う(WorksheetFunction プロパティ)  http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_ws_kansu.html#WorksheetFunction ただ「WorksheetFunction」の部分は省けるので、省いてしまってますが。 こんな感じでしょうか。

tatewaki_K
質問者

お礼

ありがとうございます!! ものすごく分かりやすくて完璧に理解することが出来ました。 いろいろな事に応用できそうなので、今後も使用していきます。 今回はとても助かりました。 ありがとうございました。

その他の回答 (1)

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

セルA1にデータがあるとしてA2以下に代入するとしたら、 Sub try() Dim v v = Split(Range("A1").Value, "/") Range("A2").Resize(UBound(v) + 1).Value = Application.Transpose(v) End Sub こんな感じかな?

tatewaki_K
質問者

お礼

ありがとうございます!! これでいけそうです。 大変申し訳ないのですが、今後の為に教えていただきたい事があります。 Range("A2").Resize(UBound(v) + 1).Value = Application.Transpose(v) についてなのですが、何をやっているのかいまいちいわかりません。。。 なんとなく、配列を行と列を入れ替えているのは分かります。 UBound(v) + 1が配列の長さを示しているという事もわかりました。 しかし、それ以外はいまいち調べてもわかりません。 お手数なのですが、どのような意味の関数で、どのような処理になっているか教えていただけませんでしょうか。

関連するQ&A

  • UNIXで文字列分割

    UNIXでマルチバイトの文字列で分割したいです。 例) aaaa bbbb cccc dddd eeee ffff ↓ [bbbb]で分割 [1]aaaa [2] cccc dddd eeee ffff できればawkで処理をしたいと考えています。

  • あるセルに色を付けた時、別のセルにも同じ色が付く

    表1と表2が有って、表1のセルに色をつけると、表2の同じ内容のセルにも同じ色が付くようにしたいのですが、 良い方法は無いでしょうか? 表1         表2 aaaa  |  bbbb cccc dddd bbbb  |  cccc aaaa gggg cccc  |  aaaa bbbb cccc ・ ・ 表1のbbbbに色つけると表2の複数のbbbbにも同じ色が付くようにしたいです。 セル1つずつに条件付書式を設定しても良いですし、関数で一括でもかまいません。 エクセル2000です。

  • アクセス フィールド値を分割したい

    いつも大変お世話になっております。 初心者につき、ご教示いただけますと幸いです。 アクセスのテーブル・フィールドに AAAA,BBBB,CCCC という値が入ってしまうため 「,」を区切りに分割したいです。 テーブル:T_商品 フィールド: 顧客ID|注文内容(連結で入ってしまうフィールド) 0001|AAAA 0002|AAAA,BBBB 0010|AAAA,BBBB,CCCC 0101|AAAA,BBBB,CCCC,DDDD,・・・ といったように、連結した値の数はまちまちで、 最大10個になります。 ちなみに、 これを ↓フィールド名 顧客ID|注文商品   に 0001|AAAA 0002|AAAA 0002|BBBB 0010|AAAA 0010|BBBB 0010|CCCC  ・  ・  ・ といったように、 最終的には 1つのフィールドにまとめたいです。 ご教示のほど、よろしくお願い致します。 尚、前半の「連結値を分割」だけでも テーブル更新(分割毎にフィールドに挿入)できれば、とても助かります! →この場合、予備フィールドなどを作成しておくか、  ワークテーブルなどで処理になりますでしょうか。 是非とも、よろしくお願い致します。

  • SQLの書き方について教えてください。

    accessについて。 シートの中に列名name、列名friendnameがあります。 name,friendname aaaa,bbbb bbbb,cccc cccc,aaaa dddd,aaaa eeee,bbbb ffff,eeee ほしいデータは aaaa,bbbb,cccc bbbb,cccc,aaaa cccc,aaaa,bbbb dddd,aaaa,bbbb eeee,bbbb,cccc ffff,eeee,bbbb と友達の友達の名前がほしいのです。 SQLの書き方を教えてください。 よろしくお願いします。

  • Excel チェックボックスのコピー、チェックをONにすると対象セルの文字の色が変わる方法

    下記の様にチェックボックス1をONにするとチェックのみ、チェックボックス2をONにすると対象セル(3つのセルAAAA、BBBB、CCCC)の文字の色が変わる様にしたいのですが、どうするのが早く、多く複製出来る方法はありませんか? 個々にチェックボックスを作成して、条件付書式などで作成は可能ですが、下記の様(DDDD、EEEE、FFFF・・・・)に複数作りたいので条件付書式では大変なので何か方法はありませんか。 VBAで作ると楽にいけると思うのですが知識不足で・・・。 ご教授願います。宜しくお願いします。 AAAA    BBBB  1□  2□ CCCC DDDD EEEE  1□  2□ FFFF ・ ・    1□  2□ ・ ・ ・    1□  2□ ・

  • access で 方法を教えてください。

    access で 方法を教えてください。 テーブルは セミコロン区切りで、区切られて表示されています (テーブル例)  1 aaaa;bbbb;cccc;dddd;eeee;ffff 2000byte 2 aaaa 300byte 3 bbbb;cccc;ffff 3000byte 4 ffff;dddd 120byte このセミコロン区切りの区切られたデータの 「件数」と「バイト」を表で表示させる方法を教えて欲しいのです。 上記テーブル例を使用しての(抽出例)  抽出条件    ↓   aaaa 2件 2500byte   bbbb 2件 5000byte  cccc 2件 5000byte   dddd 2件 2120byte   eeee 1件 2000byte   ffff 3件 5120byte 宜しくお願いします。

  • [Excel]重複データの一方のセルが持つ値を一方の空白セルに反映させたい

    A列にある7000件ほどのデータの中から重複データのみを抽出し、 重複データの一方がB列に持つ値を、もう一方のデータのB列の空白セルに反映させたいのですが、方法はありますでしょうか? 「COUNTIF」を使って重複データの抽出はできますが、一方が持つデータをもう一方の空白に反映させることができません。 手作業では期限に間に合わない可能性がみえて焦っております。 恐縮ですがご教授いただけますでしょうか。 (例) [処理前] A列:B列:C列 1111:AAAA:aaaa 2222:BBBB:bbbb 3333:CCCC:cccc 1111:    :dddd 2222:    :eeee [処理後] A列:B列 1111:AAAA:aaaa 1111:AAAA:dddd 2222:BBBB:bbbb 2222:BBBB:eeee

  • Excel抽出のマクロかVBAを教えてください

    A列にxxxがあった場合、その上に存在するIDの値を抽出する方法を教えていただけますでしょうか? 例)xxxがあった場合、IDの値を抽出したい。 以下の場合、ID:1111とID:3333と表示したい。 (ID以降の値はランダムです) A列 ID:1111 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff ID:2222 aaaa bbbb cccc dddd eeee ffffff ID:3333 aaaa bbbb cccc dddd eexxx ←xxxがあるのでその上のIDを抽出 ffffff

  • SQLでの集計

    下記の様に、「複数のitemを買っているuserと購入されたitem」のテーブルと、 user item ---------------------------------- 田中 AAAA 田中 CCCC 田中 EEEE 北野 DDDD 北野 BBBB 北野 AAAA 小堺 CCCC 小堺 EEEE 松本 EEEE 松本 KKKK 松本 CCCC 松本 DDDD 浜田 BBBB 浜田 DDDD 下記の様な IDに紐付いた 「item」のテーブルから、 ID  item ---------------------------------- 1   AAAA 2   BBBB 3   CCCC 4   DDDD 5   EEEE 下記の様に各itemと各itemを買った場合に一緒に買われるitemの一覧を結果 として表示させたいのですが、クエリの作り方が思い浮かばず、困っています。 ※)可能であれば、買われたitemを表示する際にはbuy1から(左側から)同時購入 回数の多いitemを重複せずに並べて表示したい ID  item  buy1  buy3  buy4  buy5  buy6・・・・ ---------------------------------- 1  AAAA CCCC BBBB DDDD EEEE 2  BBBB DDDD AAAA 3  CCCC AAAA EEEE DDDD KKKKK 4  DDDD AAAA BBBB CCCC EEEE 5  EEEE AAAA CCCC KKKKK 尚、IDと紐付いているitem数は決まっていますが、買われるitemの種類は上記 の様にIDが1~5だけではなく、集計してみないと判らない状況です。 今の所、SQLはACCESS(2003)上にて手打ちしています。 以上、ご教示のほど、宜しくお願い致します。

  • ACCESSにて2つのテーブルの比較

    2つのテーブルA,テーブルBがあります。テーブルBのデータ以外のデータを選ぶにはどうのようにすれば良いのでしょうか? テーブルA data--- aaaa bbbb cccc dddd aaaa cccc テーブルB data--- aaaa bbbb 欲しい結果 テーブルA data--- cccc dddd cccc よろしくお願い致します。

専門家に質問してみよう