- ベストアンサー
エクセルVBAで行列を作る方法は?
mindatgの回答
- mindatg
- ベストアンサー率48% (110/227)
>混在したプログラムは作れないので(汗) >別々のマクロを作り、 >1つずつ実施していこうと思います。 そういうのは区切り文字全てを総当りで探し特定の区切り文字に置き換えてしまう No2の回答の For i = 1 To wS1.Cells(Rows.Count, 1).End(xlUp).Row myArray = Split(wS1.Cells(i, 2), "、") For k = 0 To UBound(myArray) これを、 For i = 1 To wS1.Cells(Rows.Count, 1).End(xlUp).Row myArray = mySplit( wS1.Cells(i, 2) ) For k = 0 To UBound(myArray) に変更し、以下の関数を適当なとこに貼り付け ' 区切り文字総置き換え&Split ただしテストしてません Function mySplit(varData As Variant) As Variant() ' 想定しうる区切り文字 hoge() = Array("、", " ", "。", vbCrLf) Dim stTemp As String Dim stBuff As String Dim stDelim As String stDelim = "@" ' 区切り文字を全て@に置き換える stTemp = varData ForEach( piyo In hoge ) { stBuff = Replace(stTemp, piyo, stDelim) stTemp = stBuff } Dim aryData() As Variant aryData() = Split(stTemp, stDelim) ' 全て@で分解 mySplit = aryData End Function データの名前に区切り文字が含まれている場合 例) 山崎の、食パン、お菓子、スイカ メロン このケースは非常に面倒くさいです。力技でやったほうが早いかも
関連するQ&A
- エクセルでヘルプ・・・・
例えばA列に下記のような名前が並んでいたとします。 この中で同じ文字列のセルを含む行を全て削除する方法です。 下記の例では 5,6,7,8,12,13,14 の行を削除するかたちになります。 A B C 1 りんご 2 トマト 3 ブドウ 4 バナナ 5 サクランボ 6 サクランボ 7 メロン 8 メロン 9 みかん 10 バナナ 11 ナシ 12 スイカ 13 スイカ 14 スイカ 実際は5000~6000行データの作業になる為、手作業では大変です。 これがもしエクセルの機能で出来るならとても助かります。 宜しくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- かんたんなエクセルマクロを教えてください!
エクセルマクロを勉強しはじめたばかりのものです。 列にある、様々な文字列で、同じ名前があったときに、 その個数を出すようにするにはどうしたらよいでしょうか? 【例】 C 1名前 2りんご 3メロン 4いちご 5りんご 6レモン 7メロン 8すいか 9メロン 10空白 Cの列に様々な名前の品物があります。そのときに、行の2~9(9はもっと長いときがあり、制限のないものとします) の中の文字列で、同じものがあったときに、その名前と個数を出すようにしたいのです。(C1は見出しなので省きます) 上記の例でしたら、「りんご」が2個、「メロン」が3個あります。2個、3個という数えた個数はB列の同じ場所の一番上に上書きで 出す形で結果を表示したいと思います。例でいえば、「りんご」は2個だったので、B2に「2」と出力。メロンは3個だったので、 B3に「3」と出力させたいのです(B列にはすでに他の文字列が入っています。それを数値で上書きします。) C列をたどって、同じ文字がないときには、「同じものはありません」とメッセージボックスで出力するようなマクロです。 例ではC9までですが、このケースではC10は空白になります。C100まであったときにはC101が空白です。 こんなカンタンなのもわからないので、ぜひお教えいただけますでしょうか?できるだけ短いものが嬉しいです。使っているエクセルはおはずかしながらEXCEL97です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL セル内のデータを置き換えたい
うまく説明できないのですが、 Sheet1のA列とB列に、1つのセルに複数のデータが以下のように入っています。(データの間に「,」があります。) A列 B列 1行 6599A,6599B,6599C 6599A 2行 6599B,6599C 3行 6599A,6599C これは商品コードでして、Sheet2に明細があります。 A列 B列 りんご 6599A メロン 6599B みかん 6599B Sheet1のデータを、「りんご」「メロン」「みかん」に置き換えたいのです。 データの数が、たくさんあるので、コピー、ペーストでは対応できません。 よい方法をお教えください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAで複数のシートの中から該当値を検索する方法について
すいません、EXCEL VBAで複数のシートの中から該当する値を検索する方法について教えていただきたいことがあります。 Sheet1 A列 B列 C列 1行 11 りんご 31 2行 12 バナナ 32 3行 13 みかん 33 4行 14 ぶどう 34 ・ ・ ・ ・ Sheet2 A列 B列 C列 1行 31 すいか 11 2行 32 レモン 12 3行 33 パイン 13 4行 34 ざくろ 14 ・ ・ ・ ・ というデータが入っているブックについて 「全部のシートを検索し、A列に11の値が入っているセルの行数及びその行のB列の値」 をSheet1のD1セルとE1セルにそれぞれ返す方法はどうしたらよろしいんでしょうか。 For Each を使うのではないかと思って色々やってみたのですが、どうも上手く作動してくれません。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルで並べ替えやフラグ立て
エクセル2007を使っています。 どれか一個でもいいですので、下記教えて下さい。 A列 B列 C列 品名 店 価格 レモン 八百屋 100 にんじん 八百屋 50 レモン スーパー 120 すいか 八百屋 720 すいか スーパー 800 レモン スーパー 200 メロン 上記で Q1.A列の種類はレモン、すいか、にんじん、メロンの4種類ですが、この4という数字を出す方法を教えて下さい。 Q2 A列に含まれている個数順で レモン レモン レモン すいか すいか にんじん メロン の順で並べ替える方法を教えてください。 Q3 紐づいている種類でフラグを立てる方法 A列のレモンはB列で八百屋とスーパーと紐づいている A列のにんじんは八百屋としか紐づいていない A列のすいかは八百屋とスーパーと紐づいている A列のメロンは紐付けが無い このA列とB列の紐づけのある種類ごとにD列にフラグをたてる方法 例えば レモン 八百屋 100 ○ にんじん 八百屋 50 △ レモン スーパー 120 ○ すいか 八百屋 720 ○ すいか スーパー 800 ○ レモン スーパー 200 ○ メロン ×
- 締切済み
- その他MS Office製品
- EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?
EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。 A列 B列 C列 D列 E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600 . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。 A列 B列 C列 D列 E列 F列 2002/12/17 15240 15280 15220 15220 2002/12/18 15250 15250 15210 15210 2002/12/19 15220 15310 15220 15310 . . . といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。
- ベストアンサー
- オフィス系ソフト
- Excelについて
Excelに下記のようなデータが入っているのですが A列 | B列 りんご | 2 みかん | 3 ばなな | 1 りんご | 6 すいか | 7 かき | 3 みかん | 4 すいか | 8 りんご | 1 *(実際には100件ぐらいのデータが入っています。) A列で同じ「りんご」があれば、同じ行にあるB列の値を合計したいのでがどうすればよいですか? また「りんご」だけでなく他にもあればその値を合計して出したいのですが。 例えば、今回の例では「りんご」が三箇所あるので「2+6+1]で9と表示したいのですが。 イメージとしては、 A列 | B列 | C列 | D列 りんご | 2 | りんご | 9 みかん | 3 | みかん | 7 ばなな | 1 | ばなな | 1 りんご | 6 | すいか | 15 すいか | 7 | かき | 3 かき | 3 | みかん | 4 | すいか | 8 | りんご | 1 | というようにしたいです。どなたか教えてください。
- 締切済み
- オフィス系ソフト
- ExcelのVBAで連番を振る。
A列が空白で、B列に1行目から***行目(毎回変わる)までデータが入力されている時、 A列に、1から***まで(B列のデータが終わるまで、連番を振るにはどんなVBAを かいたらいいのでしょうか? お願いします。
- 締切済み
- オフィス系ソフト
- VBAでの他のシートにコピー
今sheet1へ、sheet2とsheet3のデータをコピーしようとしています。 sheet1は見出しが2行目にあり、3行目からsheet2をコピーしようとしています。 そのつぎに、sheet3はsheet1にsheet2のコピーした次の行からコピーします。 sheet2 A B C 3 鈴木 りんご 5 4 山田 バナナ 1 sheet3 A B C 3 大羽 メロン 2 4 鷲尾 スイカ 1 ↓2行目まで見出しがあるsheet1に sheet1 A B C 3 鈴木 りんご 5 4 山田 バナナ 1 5 大羽 メロン 2 6 鷲尾 スイカ 1 このとき、シート2とシート3は数は決まっていません。 そして、数が0のときもあるので「sheet2とsheet3にデータがないときはコピーしない」 をというふうにしたいのですが、どのようにすればよろしいですか? VBAで行いたいです。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル2003のVBAを教えて
エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、 データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目 (1):種類だけを(C列)に取り出す。 (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。 (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列) 文字(B列) AA あああ BB いいい BB いい BB いいい CC うう CC うう DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列) 文字(B列) あああ AA あああ いいい BB いいい BB いいい BB いいい うう CC うう CC うう ええええ DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ DD ええええ
- ベストアンサー
- Visual Basic
お礼
mindatgさんありがとうございます!!! @にしてしまうのは発想の転換ですね・・・・。 尊敬してしまいます。 書き方は頂いているので、 これを理解しながら自分で組み立ててみます! プログラムをレベルアップして頂き本当にありがたいです。 本当にありがとうございます。