Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5793 / 13645 ツリー ←次へ | 前へ→

【48828】セルの参照方法 ユニフ 07/5/10(木) 20:49 質問[未読]
【48830】Re:セルの参照方法 ウッシ 07/5/10(木) 20:58 発言[未読]
【48833】Re:セルの参照方法 ユニフ 07/5/10(木) 21:27 発言[未読]
【48837】Re:セルの参照方法 ウッシ 07/5/10(木) 22:11 発言[未読]
【48839】ありがとうございました ユニフ 07/5/10(木) 22:34 お礼[未読]
【48831】Re:セルの参照方法 Kein 07/5/10(木) 21:02 発言[未読]
【48835】Re:セルの参照方法 ユニフ 07/5/10(木) 21:43 発言[未読]

【48828】セルの参照方法
質問  ユニフ  - 07/5/10(木) 20:49 -

引用なし
パスワード
   よろしくお願いします。

A(セルA2〜Z2)に、ある数式が入っています。
A1〜Z1はAの内用を反映するようにB(=A2〜=Z2)というように単純な関数が入っています。

事情によってBの部分をVBAで書き込むようにしたいのですが今は
Range("A1").Formula = "=A2"
Range("B1").Formula = "=B2"


Range("Z1").Formula = "=Z2"

とやっています。しかし今度こういう作業をする対象が増えて数百行も
このようなことを書かないといけなくなり、変数を使って簡単に出来ないかと考えています。
条件として自動化機能は残すために結果だけ書く.Valueは使えない。
元の数式が長いので数式のコピーも避けたいという状況です。

我侭ですいませんが何かアドバイスあればお願いします。

【48830】Re:セルの参照方法
発言  ウッシ  - 07/5/10(木) 20:58 -

引用なし
パスワード
   こんばんは

Range("A1:Z1").Formula = "=A2"

で。

【48831】Re:セルの参照方法
発言  Kein  - 07/5/10(木) 21:02 -

引用なし
パスワード
   >自動化機能は残すために結果だけ書く.Valueは使えない。
>元の数式が長いので数式のコピーも避けたい
が、具体的なイメージが出ないのでイマイチ意味不明なんですが、どうも
VBAの問題というより、それ以前の「Excelにおけるセル参照の仕方」の知識が
足りないような気がします。絶対参照と相対参照について、いま一度、ヘルプや
参考書や解説サイトで学習して下さい。そうすれば何百行でも何十列でも
「たった一行のコードで」数式を入力できることが分かるはずです。

【48833】Re:セルの参照方法
発言  ユニフ  - 07/5/10(木) 21:27 -

引用なし
パスワード
   ウッシ さん、こんばんは
>こんばんは
>
>Range("A1:Z1").Formula = "=A2"

こうすると全部A2の参照をしてしまいます。
B1には"=B2"としたいのです。

【48835】Re:セルの参照方法
発言  ユニフ  - 07/5/10(木) 21:43 -

引用なし
パスワード
   Kein さん こんばんは

>イマイチ意味不明なんですが
説明が稚拙で申し訳ありません。朝からずっといじっているので煮えかけています。
>>自動化機能は残すために結果だけ書く.Valueは使えない。
というのは
Range("A1").Value = Range("A2").Value
とするとA2の数式の結果が変わってもA1は連動しないという意味です。

>>元の数式が長いので数式のコピーも避けたい
長い数式だと100文字以上になります。
Cells(1, 1 + i).Formula = Cells(2, 1 + i).Formula
というコードも試しましたが時間がかかるので、なるべく短い数式を書き込むようにしたい
という意味です。


>足りないような気がします。絶対参照と相対参照について、いま一度、ヘルプや

【48837】Re:セルの参照方法
発言  ウッシ  - 07/5/10(木) 22:11 -

引用なし
パスワード
   こんばんは



Range("A1:Z1").Formula = "=$A2"
とすると、全部A2になりますけど、
Range("A1:Z1").Formula = "=A2"
なら、B1には"=B2"になるはずです。

【48839】ありがとうございました
お礼  ユニフ  - 07/5/10(木) 22:34 -

引用なし
パスワード
   ウッシ さん、大変感謝です。

>?
試してみもせず、コードを読めたような気になって頓珍漢なレス
をしたことをお詫びします。さらに恥ずかしながら
質問の意図を理解してくれなかったのか
などと愚かなことを考えていました。申し訳ございません。


>Range("A1:Z1").Formula = "=$A2"
>とすると、全部A2になりますけど、
>Range("A1:Z1").Formula = "=A2"
>なら、B1には"=B2"になるはずです。

目からうろこが落ちました。結局別のセルにオートフィルターで=A2〜=Z2
まで書き込んでCells(1, 1 + i).Formula = Cells(30, 1 + i).Formula
などとやってましたが、それに比べ、うっしさんのコードの簡潔で速いこと
驚きました。
大変、助かりました。深く深く感謝いたします。

5793 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free