いちばん失敗した人決定戦

下記質問のやり直しです。
http://oshiete1.goo.ne.jp/qa5310983.html
実際に使用する式の作成のためにサンプル表を作って練習してます。
A1(=$B$1*5+$C$1/5+$D$1+10) B1(5) C1(60)   D1(20)
                    B2(=B1*5) C2(=C1/5) D2(=D1+10)
目的はA1に=$B$1*5+$C$1/5+$D$1+10を貼り付けたいのです。B2,C2,D2の式を順番にA1に貼り付けたいのですが、絶対参照は置いといて、B2はクリック、コピー、形式選択、数式でA1に=B1*5は貼り付け出来ますがC2、D2を追加で貼り付け出来ません。A1に手入力ではなく、作成済みの式をコピーする方法が知りたいです。
又、作成済みの式の相対参照を一括で絶対参照に変更するにはどうしたら良いのでしょうか?
どうぞ宜しくご教示下さい。

A 回答 (6件)

先の質問ではよく理解できませんでしたが


作業列を利用してるんだけど作業列を削除したいので
そこにある式をA1にコピーしたいと言うことですね。

> 式の相対参照を一括で絶対参照に変更するにはどうしたら

式のセルの指定(B1とか)を選択してF4を押してください。

> A1に手入力ではなく、作成済みの式をコピーする方法が知りたいです。

先にコピーしたいセルの式のイコール以外をコピーしてからA1を選択し貼り付けていきます(セルをダブルクリックしてコピー作業をします)
もしくは
ALTとF11を同時に押してVBEを起動します。
左のSheet1をダブルクリックします
左に現れた白い画面に
以下のコードを貼り付けます
ツール→マクロ→マクロで
sheet1.test
というのを実行します。
注意:セルの指定をしているところは実際にセルにあわせてください。

Sub test()

Dim MyRange As Range

Range("A1").Formula = Range("B2").Formula

For Each MyRange In Range("B2:D2")

Range("A1").Formula = Range("A1").Formula & "+" & Right(MyRange.Formula, Len(MyRange.Formula) - 1)

Next

End Sub

この回答への補足

有難う御座いました。判りにくい質問で申し訳御座いませんでした。
>式のセルの指定(B1とか)を選択してF4を押してください。
これは式を作成する時の作業ですね。出来上がってる式で相対参照のものを絶対参照に変更する方法はあるのでしょうか?
マクロに付いてはもう少し調べてから疑問点は追加質問致します。

補足日時:2009/09/23 14:39
    • good
    • 0
この回答へのお礼

式の=より後ろをドラッグして、F4を押せば絶対参照になりました。
有難う御座いました。

お礼日時:2009/09/23 15:05

>作成済みの式の相対参照を一括で絶対参照に変更するにはどうしたら良いのでしょうか


余りやったことはなかったが(ということは、たくさん関数の回答しているので、一般的に余りニーズが無いということ)やってみると

A2に=A1+B1 と入れる
A2を選択して、数式バー部で、全ての文字を選択して、F4キー
=$A$1+$B$1 なった。
複数セルを1度に絶対番地化は出来ないようだ。
ーー
>B2(=B1*5) C2(=C1/5) D2(=D1+10)から
A1(=$B$1*5+$C$1/5+$D$1+10) の式作る
そう考えないで普通はA1に=B2+C2+D2と入れると思うよ。
=B$1*5+$C$1/5+$D$1+10
とする必要性は何か。どちらが判りやすいかともいえないと思うし。
私が前の説明に書いたように、関数で値が出ているセルの、手入力
で入力されているせるも、それらを次の段階で式に使うときは、同じ扱いです。
どうしても式を残すなら
数式バー部で、順次コピー張り付けするほかない
C2に=A1+A2
C3に=A2+B2
の時
C2を選択、数式バーブで全ての文字を選択して、CTRL+V
ESC
C6を選択
CTRL+V 
=A1+A2になる。
C3を選択、数式バーブで=を除い他部分を選択して、CTRL+V
C6を選択
最後尾の次に+を入力
CTRL+V 
ENTER

=A1+A2+A2+B2 の式が出来る。
これ以上はVBAを使わないと、簡単な方法はないと思う。
ーー
今ひとつ、質問の目的が、つかめていないかもしれない。
    • good
    • 0
この回答へのお礼

皆さん、有難う御座いました。
Excelの理解不足なのでしょうが、もっと簡単な処理で解決できる問題かと思ってました。
お世話になりました。

お礼日時:2009/10/06 00:24

A1にその式を入力しなければならない理由を私が知る必要ありませんが


何か事情がお有りなのでしょうね。

私なら特に理由がないので合計値を求めるために、先ず次の式を入力します。
 =B2+C2+D2  
  または
 =SUM(B2:D2)  「この方がB2C2D2*****K2など多数の場合に =SUM(B2:K2)で入力簡単」

次にもし必要なら、欄外またはA2に註として、「A1はB2からD2の合計」と表示します。
このメリットは
もし必要があってA1の式の内容を見た場合に
=B1*5+C1/5+D1+10 では一目でB2からD2の合計であるとは全くわかりません。
=SUM(B2:D2) なら一目瞭然で合計だと理解できます。
更にB2,C2,D2をクリックすればそれぞれ B1*5,C1/5,D1+10であることも確認できます。

以上質問に対する直接の答えになっておりませんが参考までに。
    • good
    • 0

マクロでやらないなら以下のような手順でしょうか。



(1)対象シートをコピーします。以下、コピーしたシートでの作業です。
(2)2行目を選択して「編集」-「検索」で「検索と置換」を表示し、置換タブで検索する文字列に「=」、置換後の文字列に何も入力せず「すべて置換」を実行。
 #これによって各セルに”=”なしの式の文字列が表示されます。
(3)B3に「=B2」を入力し、C3:K3を選択して「=B2 & "+" & C2」をCtrl+Enterで入力。
 #これによってK3に各式を+した文字列が作成されます。
(4)K3をコピーしてA1に値貼り付けし、先頭に「=」を付け加える。
(5)A1の式を編集状態にし、文字列全体を選択してF4で絶対参照に変換する。
(6)この式をコピー元のシートのA1にコピペします。

以上です。
    • good
    • 0

再度訂正



For Each MyRange In Range("B2:D2")

For Each MyRange In Range("C2:D2")
    • good
    • 0

訂正です



左に現れた白い画面に

右に現れた白い画面に
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!