• 締切済み

ExcelVBAの配列変数で一括でセルに数式を挿入する方法

ExcelVBAの配列変数で一括でセルに数式を挿入する方法 ExcelVBAでTEST1シートを参照して、TEST2シートに数式を貼り付けたいと思っています。 例えばTEST2シートのA1セルには、TEST1シートのA1を参照する数式 =IF('TEST1'!A1="","",'TEST1'!A1))を挿入、 TEST2シートのA2セルには、TEST1シートのA2を参照する数式 =IF('TEST1'!A2="","",'TEST1'!A2))を挿入、 それをA1セルからZ10セルまで同様に数式を挿入したいと思っています。 以下のように配列変数を用いて、一括で挿入すると数式ではなく、文字が入ってしまいます。 Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI ※SUSHIKI←数式を入れた配列 どのような記述を行えば、数式を貼り付けることができるができるでしょうか。 できればOffsetを使用した形で作成したいです。 どうかご教授お願い致します。

みんなの回答

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.4

例: Range("A2") = "=B1+C1" のようにすればできますが・・・ 参考: ■5.3 セルへ文字列、数値、数式を書込む1 http://www.happy2-island.com/excelsmile/smile03/capter00503.shtml

参考URL:
http://www.happy2-island.com/excelsmile/smile03/capter00503.shtml
全文を見る
すると、全ての回答が全文表示されます。
  • avanzato
  • ベストアンサー率54% (52/95)
回答No.3

#2です。 語読力が弱くて申し訳ないのですが、 >配列変数をエクセルにみたて というのは SUSHIKI(1,1)をA1と見立てて SUSHIKI(26,10)をZ10と見立てるという意味でしょうか? 因みに >Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI をテストして見ましたが文字ではなく数式が入りました。 変数SUSHIKIに格納されているデータは間違いなく数式が入っていますでしょうか? SUSHIKI = Range("TEST2!A1").Formula '数式格納 SUSHIKI = Range("TEST2!A1").Value '文字格納 再度確認願います。

全文を見る
すると、全ての回答が全文表示されます。
  • avanzato
  • ベストアンサー率54% (52/95)
回答No.2

こんにちは。 確認したい点がございます。 配列変数SUSHIKIに格納されているデータもしくは格納するコードが分かれば提示願います。 また、Offsetを使用したいというのは何らかの意味があってとの事でしょうか? ただ数式を指定範囲に貼り付けたいのであれば Sub TEST() Sheets("TEST2").Select Range("A1").Copy Range("A1:Z10").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Range("A1").Select End Sub で動作します。 補足をお待ちしております。

tosuma
質問者

お礼

ご回答ありがとうございます。 コピー以外の方法で処理を行いたかったものでして。 数式も例のもの以外に、フラグによってループ処理の上で変更したりと 色々応用してみたかったんです。 配列変数をエクセルにみたて、 様々な数式を配列変数に挿入した場合には、 エクセルに一括して吐き出すことが可能なのかなと思いまして。

全文を見る
すると、全ての回答が全文表示されます。
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

別に配列もoffsetも必要ないと思うけど >Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI を Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = "=IF(TEST1!A1="""","""",TEST1!A1)" で試してみて 参考まで

tosuma
質問者

お礼

ご回答ありがとうございます。 この形を応用することでやりたかったことができそうです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 配列数式的に一括してRangeを扱かえ…

    毎度お世話になります。 質問はオブジェクト変数の取扱方について、 と、言えると思います。 具体的には取りあえず2つ  1、シート関数で云うところのif(IsEmpty("A:A"),結果1,結果2)    的な事ってそのまま配列数式的に一括で出来ますか?    (※注:「なんちゃって」してぶっ込んでますね、IsEmptyなんて構文、シートにはないかも 汗)    ここ数日、いろんな方に対して書き込みを行っていたのですが、    見ていると、それらしいのを見つけたのです。    が、ちんぷんかんぷんで…    IF構文とかで素直な描き方が出来たら良いな…    と、感じます。  2、object変数 仮に変数名を「オブジェクト」としますが、    Dim オブジェクト() As object    と、配列で宣言して    SET オブジェクト = Nothing    で、配列要素の全てと、各要素のobject内に対してNothingが適応されますか? そんなこと自分でやって試せば、VBEの挙動で解るヤン!! ぷんぷん 怒り と、突っ込みが来そうなんですが、 お教え下さい。

  • ExcelVBA 挿入貼り付けについて

    ExcelVBA勉強中の者です 変数にA1セルを指定し、別のセルへA1の値を挿入したいのですが上手くいきません。 Dim A1Cell As Range Set A1Cell = Range("A1") ↑Msgbox(A1Cell)にてA1セルの値を出力したので変数の宣言は出来ていると思います。     ActiveCell.Resize(1, 5).Select    Selection.Copy Range(A1Cell).Selection.Insert Shift:=xlDown         ↑ここでの変数の指定が間違っていると思われます Application.CutCopyMode = False かなり調べたつもりですが、自力では解決できずどなたか御助力お願い致します。

  • 保存をすると数式が勝手に配列数式になってしまいます

    やりたかったのは、次のような処理です。 1.現在のセルから見て、1行上のセルを参照します。 2.1行上のセルの中身が、""(空白)であれば、現在のセルの中身も""(空白)に、そうでなければ、1行上のセルの中身に1を足した数を入力します。 そこで、以下のような数式を入力いたしました。 =IF(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) = "", "", OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) + 1) 結果は、成功でした。 ところが、この数式を入力したファイルを保存すると、次回開いたときに、 {=IF(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) = "", "", OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) + 1)} と、勝手に{}で数式が囲まれてしまい、結果として、セルにはエラーが表示されてしまいます。 この原因は、何なのでしょうか? よろしくお願いいたします。

  • Excelのセルから配列変数への一括読込み

    VB(というかプログラミング)の超初心者です。 Excelシートの任意の領域にある数値を、配列変数に一括して 入力したいと思っています。 これまで、 Dim XXX(10) As Variant For I = 1 To 10 XXX(I - 1) = Cells(1, I).Value Next I Range(Cells(10, 1), Cells(10, 10)).Value = XXX の様な感じで処理していましたが(最近まで、セルへの書込みも For-Nextで処理していました)、データ数が多くなると処理に 時間がかかってしまいます。 配列YYYへの読込みもセルへの書込みの様に一括して行うには どうすれば良いでしょうか? よろしくお願いします。

  • ExcelVBAでセルの番地を変数として扱いたいですが

    ExcelVBAでセルの番地を変数として扱いたいですが 例えばaという変数に『Range(Cells(2, 5), Cells(2, 8))』を入れたとします。 このセル番地は複数を指定していると思うのですが、 このセル番地すべてを一個下にずらす、つまりCells(1,0)をプラスしたいんですが、 どうしたら良いのでしょうか? a + Cells(1,0)ではダメでした。

  • 配列数式がうまくいきません

    現在、部品の管理をする為に配列数式をたてて行っています。 集計表にのセルに以下のような式が入っています。 {=SUM(IF($M$10:$M$500=200711,IF($S$10:$S$500={10,11},$T$10:$T$500,0)))} M列:客先の希望納期(2007年11月) S列:こちらの納品月(10月、11月) T列:納入数量 今は自分で行っておりますので年が改まった場合などに式(希望納期月)を書き換えておりますが、担当者が変わると配列数式を知らない方が行うこともありえるので、あるセル(A1)を参照する形で式を以下のように変更してみました。 このようにすればA1のセルの部分を変更するだけでいけると考えました。 {=SUM(IF($M$10:$M$500=VALUE(A1)&11,IF($S$10:$S$500={10,11},$T$10:$T$500,0)))} しかしながら、この式ではうまく行きません。 この計算式のどこがまずいのでしょうか。 よろしくお願いいたします。

  • Excel2000で数式を配列にしてセルに放り込むと計算されない

    一定の法則で作成されて数式をセルに放り込む場合、 (1)のようにループさせると非常に時間がかかりま した。(実際の数式セルはもっとたくさんあります。) それで数式を一度、(2)のように配列に入れて放り 込んだところ約1/10の時間で処理はすみました。 ただ、放り込まれた数式が計算されずに式のまま表 示されてしまいます。 セルをダブルクリックして、その後、リターンを押すと計算され ます。 これを自動的に計算させることはできないのでしょうか? (1)    For i = 1 To 3      For j = 1 To 10        Cells(i, j).Formula = "数式"      Next j    Next i (2)    myFomula(3, 10) = "数式" '← この中に数式を入れる。    Range(Cells(1, 1), Cells(3, 10)).Formula = myFomula

  • 配列数式で行を増やすためには

    シート1の一覧表からシート2の配列数式の入った表へある条件のものを抽出する作業を行っています。 シート2で行を増やそうと思い、配列数式の入ったセルを選択→解除→行を増やす→再度配列数式へ、という作業を行いました。 しかし、#N/Aというエラー表示がでます。シート1の表と指定範囲は変わっていないのにエラー表示はなぜ出るのでしょうか。

  • ApplescriptでExcelのセルに数式挿入

    ApplescriptでExcelのセルに数式を挿入したいのですが、方法がよくわかりません。 スクリプトを自作したのですが、数式が途中で切れてしまいます。よろしくお願いします。 OS X 10.5.8 スクリプトエディタ 2.2.1 Microsoft Excel 2008 for Mac 12.2.0 [[入れたい数式]] =IF(K11>=10,"#225500",IF(K11>=7.5,"#44AA00",IF(K11>=5,"#66FF00",IF(K11>=2.5,"#99FF55",IF(K11>=0,"#CCFFAA",IF(K11>=-2.4999,"#FFAAAA",IF(K11>=-4.9999,"#FF5555",IF(K11>=-7.4999,"#FF0000",IF(K11>=-9.9999,"#AA0000","#550000"))))))))) [[数式を入れたいセル]] N11 [[自作したスクリプト]] tell application "Microsoft Excel" set formula of range "n11" of active sheet to "=IF(K11>=10,"#225500",IF(K11>=7.5,"#44AA00",IF(K11>=5,"#66FF00",IF(K11>=2.5,"#99FF55",IF(K11>=0,"#CCFFAA",IF(K11>=-2.4999,"#FFAAAA",IF(K11>=-4.9999,"#FF5555",IF(K11>=-7.4999,"#FF0000",IF(K11>=-9.9999,"#AA0000","#550000"))))))))) " end tell [[結果]] =IF(K11>=10,)

    • 締切済み
    • Mac
  • [マクロ]配列を区切り文字で変数に格納する方法

    タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。