• ベストアンサー

excel vba セルへの一括挿入

Excel+VBで簡単なシステムを作成しております。 VBでテキストファイルを読み込み、ある桁数で分割して2次元配列に格納しています。(行:レコード 列:カラム) 現在は、要素ごとにセルを指定して挿入しているのですが、レスポンス向上のため、行単位でセルに挿入できると聞きました。 具体的には以下です。 配列 (0,0)="A" (0,1)="AA" (0,2)="AAA" (1,0)="B" (1,1)="BB" (1,2)="BBB" (0,0)をセルA1に、(0,1)をセルC1に、(0,0)をセルE1に1文で挿入。 もちろん、セルA1:E1に対して配列値を代入する形になると思うのすが、記述の仕方がわかりません。 お分かりになる方が見えましたら、ご教授願います。

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

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.2

行単位どころか、範囲でできます。 Dim a(1, 2) a(0, 0) = "1" a(0, 1) = "2" a(0, 2) = "3" a(1, 0) = "4" a(1, 1) = "5" a(1, 2) = "6" With ThisWorkbook.Worksheets(1).Range("A1") .Range(.Offset(0, 0), .Offset(1, 2)).Value = a End With こんなかんじですね。

forester
質問者

補足

ありがとうございます。 早速、試してみたのですが、指定したセルに挿入されません。 以下のように記述すると、A5にデータが挿入されてしまいました。 With xl.Application.Sheets("DATA").Range("A3") .Range(.Offset(0, 0), .Offset(0, 19)).Value = StrEspData End With また、 With xl.Application.Sheets("DATA").Range("A7") .Range(.Offset(0, 0), .Offset(0, 19)).Value = StrEspData End With と記述したら、A13にデータが挿入されました。 よくみると、遇数列を飛ばしていることに気がついたのですが、 なぜなのでしょうか?

その他の回答 (1)

回答No.1

セルA1:E1に代入する時にB1, D1の内容は保持したほうが いいでしょうか? クリアしてもいいよ,というのであれば Dim x(0,2) as String x(0, 0) = "A" x(0, 1) = "AA" x(0, 2) = "AAA" Range("A1:E1") = Array(x(0,0), , x(0,1), , x(0,2)) ではどうでしょう。 すいません。 Excelはあまり使ったことないのでレスポンス向上の効果までは 考えてないです。

関連するQ&A

  • エクセルVBA 配列の書き方とセルへの一括表示方法

    エクセルのVBAで 下記のようなプログラムを作成しています。 1行目はタイトル行で E列が空白になるまで、 各行のE列~H列の値を変数に入れて、 最後に一括で別の列・行にそれぞれの値を表示・書込したいと思ってますが、 どうもVBAは初めてでよくわかりません。 Dim aaa As String Dim bbb As String Dim ccc As String Dim eee As Double intRow = 2 Do Until Cells(intRow, 5).Value = "" aaa = Cells(intRow, 5).Value) bbb = Cells(intRow, 6).Value) ccc = Cells(intRow, 7).Value) ddd = Cells(intRow, 8).Value) intRow = intRow + 1 Loop aaaの各変数を2行目のA1~intRowまで bbbの各変数を2行目のB1~intRowまで cccの各変数を2行目のC1~intRowまで dddの各変数を2行目のD1~intRowまで セルに一括して表示したいのです。 配列の書き方と、セルの範囲に表示・書込する方法を どうかご教示下さい。お願いいたします。

  • 【エクセル】空セルを埋める方法

    お世話になります。 下記のような表があります。 1行目:AAA,BBB,CCC,DDD 2行目:空セル,BBB,CCC,DDD 3行目:空セル,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:空セル,BBB,CCC,DDD ・・・ こんなパターンの行が結構あります。 空セル部分を下記のように埋めたいのですが 1行目:AAA,BBB,CCC,DDD 2行目:AAA,BBB,CCC,DDD 3行目:AAA,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:aaa,BBB,CCC,DDD てっとり早く埋める方法ありませんか? いまは、【ctrl+↓】 ⇒【↑】⇒【ctrl+D】を延々繰り返しています。 宜しくお願いいたします。

  • excel で自動で行を挿入する(コピー)

    先ほど、似たような質問をしたばかりなのですが、 マクロ、関数等を使って、 1行ごとにその行を指定行分コピーして挿入することは可能でしょうか? ※先ほどは空の行挿入でした たとえば、以下のようデータがあった場合。 1行AAA 2行BBB 3行CCC これに3行挿入マクロ(関数)を実行した場合 以下のようになる感じです。 1行AAA 2行AAA 3行AAA 4行AAA 5行BBB 6行BBB 7行BBB 8行BBB 9行CCC 10行CCC 11行CCC 12行CCC

  • 【少し急いでます】エクセルについて教えてください!

    Excel2000を使っています。 A列に重複するデータがあり、B列に別データがあります(20000行強) 例)     A  B 1  001 aaa 2   001 bbb 3   001 ccc 4   002 aa 5  002 bb 6  003 aaa 7  003 bbb 8  004 ddd 9   004 eee 10  005 aa 11  006 bbb A列で重複する001は3行あり、重複しているデータは1行にまとめてB列のaaa、bbb、cccをつなげたいです。(わかりづらくてすみません) 例)     A      B 1  001  aaa・bbb・ccc 2  002   aa・bb 3  003  aaa・bbb というようにまとめたいです。 どのような方法がありますでしょうか? よろしくお願い致します。

  • Excel VBA 2次元配列の一部をセルに出す

    Excel VBAで2次元配列中の一つの次元をセルに一発(For等でループせずに)で縦方向に書きたいのですが、何か良い方法は有るでしょうか。 例 Dim tmp(2, 2) As String tmp(0, 0) = "A"     : tmp(0, 1) = "B"  :  tmp(0, 2) = "C" tmp(1, 0) = "D"    : tmp(1, 1) = "E"    : tmp(1, 2) = "F" tmp(2, 0) = "G"    : tmp(2, 1) = "H" :   tmp(2, 2) = "I"   セル B1 ~ B3 に tmp(1,0)~temp(1,2)の出力したい ( セル B1に D、セルB2に E、 セル B31に F が入る) Transposeをみたのですが、一次元配列が前提のようです。 2次元配列の要素の一つを一次元にする方法でも構いません。   よろしくお願いします。

  • Excel でコピーしたセルの挿入が出来ません

    WIN 10 ですExcel でコピーした行のセルの挿入が出来ません 長年使っていて初めてのトラブルです1ページ分をコピーをして上の行に挿入しているのですが コピー(C)>でコピーをしてから>次にコピーしたセルの挿入(E)を選びたいのですが出て来ません 1行でも挿入が出て来ないので出来ません 隣のシートの場合はは挿入(E)が出て来て挿入できます よってソフトの異常ではなくこのシートに何か異常隠れた変なデーターが入っているのでしょうか 対策が有りましたらよろしくお願いいたします

  • Excel VBA セル値の配列代入について

    Excel VBAで、セルの値を配列に代入する処理を、よくやります。 arr=Range("$A1:$C1000").value とかですね。これに関して、オートフィルタで絞り込んだ結果の可視セルだけを、配列に代入するということは、やっぱり出来ないのでしょうか。

  • エクセル初心者です。

    A列に100行くらいのデータが入っています。B列に同じく100行くらいのデータが入っています。     A  B (例)AAA  120%    BBB  2300t/年    CCC  AA3500 コレをA列に AAA120、BBB2300 等のように1つのセルにデータをまとめたいのです。できれば一括で・・。でB列を削除したいのです。A1&B1で表示をしたら、120%のところが1.2になって%も表示されません・・。

  • エクセルのデータ変換について

    エクセルのセル内データ全て(空白セルも含め)をダブルクォーテーションで囲みたいと思っています。 そして、CSVファイルとして保存したいのです。 何か良い方法をお知りの方、ご教示お願い致します。 例えば、、、 |3|aaa|bbb|aa333|ccccc|ab| | | |あああ|いいい|222| | |aう4| を |"3"|"aaa"|"bbb"|"aa333"|"ccccc"|"ab"|""|""|""|"あああ"|"いいい"|"222"|""|""|"aう4"| と言う様に変換したいのです。 よろしくお願い致します。

  • Excel マクロ VBA セル内で改行された文字列の分割

    はじめまして。 ExcelのVBA初心者で、ちょっと困っています。 (例) (1) セルA1に以下のような改行された文字列が入力されています。 【セルA1】 a aa aaa b bb bbb (2) セルA1内の文字列を3行毎に分割し、セルA2以降に表示させたい。 【セルA2】 a aa aaa 【セルA3】 b bb bbb ※ 今回の例ではセルA1に6行しかありませんが、実際に行数は決まっていません。 そこで以下のようなVBAを見よう見まねで作り、1行毎の分割はうまくいったのですが、『3行毎に分割』ができません。 Sub 分割() Dim A, B, C A = Split(Range("A1"), Chr(10)) B = 0 For Each C In A B = B + 1 Range("A2").Offset(B - 1, 0).Value = C Next End Sub ご教授いただけると助かります。 よろしくお願い致します。

専門家に質問してみよう