excelシートに
こんな感じです。
A1 B1 C1

A2 B2 C2

A3 B2 C3

A5 B5 C5

A1,B2,C3に500,000 / 600,000 / 700,000と数字がはいっています。
A5 B5 C5に A1,B2,C3の数字に×1.05した結果を表示させたいのです。

VBAで書くにはどうしたらよいでしょうか?

Cells( , )*1.05
Cells( , )←このセルの指定を=ExcelのA1→B2→C3をというように変化させたいのです。
offsetなどを使ってみてもうまくいきません。


よろしくお願い致します。


next

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>For j=1 To i-1


>Cells(i+1,j).value = cells(j,j).value*1.05
>Next j

例えば、ご質問のケースでは3行×3列なのでi=4です。
5行目に結果を表示させたいとのことなので、行の指定をi+1(=5)とし、1列から3列まで入力するためにjを1から3(=i-1)まで回しました。

順を追っていくと、
Cells(5,1)にCells(1,1)×1.05の結果を書く。
Cells(5,2)にCells(2,2)×1.05の結果を書く。
Cells(5,3)にCells(3,3)×1.05の結果を書く。
です。

この記述だと、斜めの入力セル数が3個に限らず、99個まで対応できます。どのような状況で利用されるのか、ご質問では推測できませんでしたので、汎用性が高いほうで記述しました。やっていることはNo.1の回答の方と同じです。
    • good
    • 0

上記のケースですと、


For i = 1 To 100
If Cells(i, i).Text = "" Then Exit For
Next i
と書いて、行数(または列数)をカウントします。この場合はi-1です。
そのあと、
For j=1 To i-1
Cells(i+1,j).value = cells(j,j).value*1.05
Next j
でOKです。
    • good
    • 0
この回答へのお礼

さっそく EXCELに移してみると ちゃんと結果がでました!!ありがとうございます。
For i = 1 To 100
If Cells(i, i).Text = "" Then Exit For
Next i
これは、A1 B2と 空欄になるまでセルを移動しなさいという意味ですよね?
For j=1 To i-1
Cells(i+1,j).value = cells(j,j).value*1.05
Next j

これは、、あまり意味がわかりませんでした。でも ちゃんと結果がでますし、、
たとえば、 iが1の時は、jは 1から0までと言う意味ですか?
cells(2,1)にcells(1,1)に1.05をかけた結果を表示せよという意味ですか?

お礼日時:2001/12/08 23:41

こんなかんじではないでしょうか?


ココで使っている ConvertFormula はR1C1形式の参照⇔A1形式の参照のように変換してくれます。なので、ここでは通常 Cells(cnt, cnt) になるところをRange("A1")のような形式に変換しています。



Dim cnt As Integer

For cnt = 1 To 3

Range(Application.ConvertFormula( _
Formula:="R5C" & cnt, _
fromReferenceStyle:=xlR1C1, _
toReferenceStyle:=xlA1, _
toabsolute:=xlRelative)).Value = Range(Application.ConvertFormula( _
Formula:="R" & cnt & "C" & cnt, _
fromReferenceStyle:=xlR1C1, _
toReferenceStyle:=xlA1, _
toabsolute:=xlRelative)).Value * 1.05

Next cnt
    • good
    • 0
この回答へのお礼

pesoさんありがとうございます。以前 インプットボックスでの範囲指定で、A1からB3というように 指定したいといった質問をしたのを覚えてくださっていてくれたのでしょうか?

今回は、そんな配慮が感じられる回答と推察いたしました。でもちょっと わたしには難しくてよくわかりませんでした。残念です。

お礼日時:2001/12/08 23:46

こんにちは。

maruru01です。
こんな感じでしょうか。

Dim i As Long

For i = 1 To 3
  Cells(5, i) = Cells(i, i) * 1.05
Next i

では。
    • good
    • 0
この回答へのお礼

maruru01さん またまた 回答ありがとうございました。
私の 弱い頭でわかる回答でした。

(うう 上の2件についても理解したかったです)

お礼日時:2001/12/08 23:48

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示

エクセル初心者です

セルのA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示されるようなものを作りたいのですが・・・
どなたかご教授お願いします

例えば、A1に1を入れるとB1の値"北海道"がA1に表示され、A2に2を入れるとB2の値"青森"がA2に表示といった感じでです

宜しくお願いいたします

Aベストアンサー

No3,5,6です。
補足要求をしましたが時間がないので、No6での以下の理解、

B4がROOT,C4が♭9,D4が9,E4がm3,F4がM3~M4がM7
置き換え対象はB6:W11の範囲

ということでいいのなら以下で出来ます。

1.シートのタブを右クリックし、コードの表示を選択
2.出てきたVBエディター(白い画面)に下記をコピペ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
If Intersect(Target, Range("B6:W11")) Is Nothing Then Exit Sub
x = Target.Value
Application.EnableEvents = False
Target.Value = Range("A4").Offset(0, x)
Application.EnableEvents = True
End Sub

3.AltキーとF11キーを一緒に押してワークシートへもどります。

Qエクセルについてなのですが、 例えば指定の範囲内に A B B C A B C A B B C D

エクセルについてなのですが、

例えば指定の範囲内に
A B B C A B C A B B C D B D
と並んだセルからAとDの合計を出したい時はどのようにすればいいのですか?

COUNTIFSだったら複数条件を満たした数を表示するので希望とは違います。
希望はA or Dの合計を出したいのです。

Aベストアンサー

こんにちは!

COUNTIFS関数はAND条件になりますので、今回の質問には適しません。

=COUNTIF(範囲,"A")+COUNTIF(範囲,"D")
のように「A」のセル数と「D」のセル数をコツコツと足し算するのが
間違いないと思います。m(_ _)m

Qエクセルの列表示を1,2,3,からA,B,C,に戻したい。

初期状態では、エクセル行は1,2,3,~、列はA,B,C,~となっていると思いますが、先日知り合いからもらったエクセルファイルは列も1,2,3,~となっていました。
どうしたら、A,B,C,~に戻せますでしょうか?
教えて下さい。

Aベストアンサー

「ツール」→「オプション」→「全般タブ」で「R1C1参照形式を使用する」のチェックを外して下さい

Qエクセルの列番号(上のA,B,C,D…)が数字になってしまいました。

エクセルの列番号(上のA,B,C,D…)が数字になってしまいました。
気が付いたら、縦横ともに列番号、行番号ともに数字になっています。
どうしたら列番号が元のアルファベッドに戻るのでしょうか?
セル参照とかする時非常にわかりずらいのですが……
特にどこかの設定を触ったとかってないのですが、勝手に変わっちゃったってこともないと思うんですけど……
ウィンドウズVisutaのエクセル2007です。
どなたかわかるかたいらっっしゃいますか?

Aベストアンサー

http://www.geocities.jp/laut6/r1c1/r1c1.html
チェックを外し、現在開いているファイルを保存します。この設定は各ファイルに保存されるのですが、一番最初にこのR1C1参照形式のファイルを開いたりブックのウィンドウがない状態でR1C1形式のファイルを開いてしまうと、デフォルト設定が自動的にR1C1形式に変更され、それ以降開くファイルはすべてR1C1形式に変更されてしまいます。気づかずに上書き保存すると後が大変です。

R1C1/A1の参照形式がファイルを開くと変更される
http://support.microsoft.com/kb/405338/JA/

Excel で R1C1/A1の参照形式がファイルを開くと変更される
http://support.microsoft.com/kb/405338/ja


ちなみに、R1C1参照形式は
http://bbs.pc21.nikkeibp.co.jp/keyword-245
で解説されているように使用します。


このカテゴリの人気Q&Aランキング

おすすめ情報