- ベストアンサー
VBAで斜めの数字を計算させる
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
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- 一つのセルに関数計算式と数字を入れたいです
エクセルの質問です一つのセルに関数計算式と数字を入れる様にすることは可能でしょうか? 例えば そのセルに何も入力しないと、他のセルとの計算結果が表示され、数字が入力されると、その数字を元に他のセルへ計算結果が出る様にしたいのですが、A1のセルに何も数字を入力しないと、計算式でA1は=B1/C1の%表示で、A1に数字を入力すると、その数字を元にB1は=C1*A1の計算結果を反映させたいのですが、よろしくお願いします
- 締切済み
- オフィス系ソフト
- VBAで実行時エラー'13': がでます
初歩の初歩ですいません。 VBAで Dim A As Integer Dim B As Integer Dim C As Integer Dim gokei As Integer For i = 8 To 70 A = Cells(i, 4).Value B = Cells(i, 5).Value C = Cells(i, 6).Value goukei = A + B + C Cells(i, 7) = goukei Next i としていますが A = Cells(i, 4).Value のところで今使っているシートだと止まってしまいます。 新規でワークシートを使って仮に数字を代入すると普通に動きます。 今使っているシートもセル内には =100 と入力して 100 と表示され セルの書式設定も数値になってるんですがどうしてでしょうか?
- ベストアンサー
- その他MS Office製品
- 【Excel】セルに入れた数字だけ同じことを繰り返す【VBA】
A1のセルに数値を入れ、マクロを実行させたときに A1に入れた数値だけ同じ行動を行うというプログラムを作りたいのですが、 うまくいきません。 VBAで実行させたいです。 Sub Macro1() c = 1 For a = 1 To 54 Cells(2, 2) = a b = Int(54 * Rnd + 1) If Cells(10, b) = 0 Then Cells(10, b) = c: c = c + 1: Cells(1, a) = b Else a = a - 1 Next a End Sub 未だたたき台なプログラムですが、これを元に作成できないでしょうか?
- ベストアンサー
- オフィス系ソフト
- セルの文字式の計算をVBAで行いたい
A1のセルに "100+5n" という文字式が入っている状態で VBAにてこのセルの文字式計算を行いB1のセルから順に結果を出力したいと思っています。 "n"は1から順に指定された数まで1づつ増えていくようにし B1のセル:105、C1のセル:110、D1のセル:115 ・・・・ と結果がなるようにしたいのですが、VBAでどのように記述すればいいのか悩んでいます。 VBAを使わずにExcelの関数で計算できるのならそれでもよいと思っています。
- 締切済み
- その他(プログラミング・開発)
- VBA 比較してリンク
初めまして。VBA初心者です。 まずはこちらを見て下さい。 Sheet1 Sheet2 A B C D A B C D 1 大区分 中区分 名称 20 大区分 中区分 名称 2 A a あ 1 21 A a あ 1 3 い 2 22 い 2 4 う 3 23 う 3 5 え 4 24 お 5 6 お 5 25 b あ 1→6 7 b あ 6 26 い 2→7 8 い 7 27 う 3→8 9 う 8 28 お 5→10 10 え 9 29 B a か 11 11 お 10 30 き 12 12 B a か 11 31 け 14 13 き 12 32 こ 15 14 く 13 33 b か 11→16 15 け 14 34 き 12→17 16 こ 15 35 け 14→19 17 b か 16 36 こ 15→20 18 き 17 19 く 18 20 け 19 21 こ 20 元々関数を使用していたのですが、数があまりに多くなってきたため、VBAで処理できればと初めて作ってみましたが、途中で行き詰った為ご教授お願いします。 Sheet1,2にそれぞれ表があり、Sheet1が元となります。(行は1000行以上になることもあります。) それで、Sheet2の名称をSheet1の名称と比べ同じ場合、Sheet1のD列をSheet2のD列にリンクさせたいのです。 一応、色々見ながら下記のように組んでみたのですが、矢印の左側のようになってしまいます。 これを、右側のような結果にしたいのですが、なんとなく間違ってる箇所は分かるものの、どのようにしていいか分かりません。 これをどのようにしたらよろしいでしょうか?若しくは、他にやり方があれば教えて頂きたいです。 分かりづらい説明で申し訳ないですが、よろしくお願い致します。 sub test() Dim i As Integer,maxrow As Integer maxrow = Sheet2.Range("C" : Rows.Count).End(xlup).Row For i = 1 To maxrow - 19 If Sheet1.Cells (1+i,3)=Sheet2.Cells(19+i,3) Then Sheet2.Cells(19+i,4)="=Sheet1" & Sheet1.Cells(1 + i,3).Offset(0,1).Address Else Sheet2.Cells(19+i,4)="=Sheet1" & Sheet1.Cells.Find(Sheet2.Cells(19+i,3)) _ .Offset(0,1).Address End if Next i End sub
- ベストアンサー
- その他(プログラミング・開発)
- エクセル2002VBAで合計を計算したい
単純なことなのかもしれませんが… エクセルVBAでセルの足し算をしたいのです。 セルA1に合計を出したくて A15+A25+A35…と、A155までの足し算の結果をA1に出したいのです。 また、A2のセルにはA16+A26+A36… A3にもA17+A27+A37…と。 そしてB1,B2,B3にも、B15+B25+B35…B16+B26+B37…B17+B27+B37とそれぞれ。 C列にも同様にです。 A1からC3までに、同じような演算の結果が出るということです。 これをエクセルのSUM関数を使わずに、VBAの記述で実現したいのですが・・・ どういう記述の仕方があるでしょうか?
- ベストアンサー
- Visual Basic
- VBA オートフィルの操作方法
VBAで使用するオートフィルの指定方法がわかりませんでしたので 質問いたします。 やりたいこと セルがAとBセルが一番下まで結合されている状態 (A1とB1セル結合・A2とB2セル結合・・・) にて、セル(A5とB5が結合されたセル)を選択し 何も数字が無ければ、数字があるセルまで選択する (この場合End(xlUp)にて数字がある一番上のセルを選択する) そのあと、セル(A5とB5が結合されたセルの一つ上)まで オートフィルをしたいのですが 下記のコードだと実現できませんでした。 おそらくrange指定がキチンとできていないのと セルが結合されているのも要因の様な気がします・・・ すいませんが実現できるコード記載お願いできますでしょうか。 回答宜しくお願い致します。 Cells(5, 1).End(xlUp).Select Selection.AutoFill Destination:=Range(Cells(5, 1).End(xlUp), Cells(5, 1).Offset(-1, 0)), Type:=xlFillCopy
- 締切済み
- Visual Basic
- VBA 別シートの計算表
Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010
- ベストアンサー
- Excel(エクセル)
- エクセルVBAでセル選択するコードが変
エクセルのワークシートでVBAでセル選択するコードで理解に苦しむことがあります。 通常、Cells(2, 1)はセル番地で言えばA2セル Cells(4, 1)はセル番地で言えばA4セルです。 しかし、 With .Range("B5:B15")でくくれば .Cells(2, 1)はセル番地で言えばB6セルだと思います。 .Cells(4, 1) はセル番地で言えばB8セルだと思います。 ところが下記のコードを動かすと、なぜかC10:C12が選択されてしまいます。 この理屈がわかりません。 Sub test02() With Sheets("Sheet1") With .Range("B5:B15") .Range(.Cells(2, 1), .Cells(4, 1)).Select End With End With End Sub なお、 .Range(.Cells(2, 1), .Cells(4, 1)).Selectを .Range(“A2:A4”).Selectに書きかえると、希望のB6:B8が選択されます。
- ベストアンサー
- Excel(エクセル)
- VBA セルに入力されている数値でセルを指定する
Excel VBA初心者です。 Sheet1のA1セルに10、A2セルに3を入力しています。 この入力したセルの数値を参照して、 Sheet2の「Cells(10,3)」(C10セル)を青(Interior.ColorIndex = 5)に 書式変更したいのですが、「Cells(”Sheet1.A1の値”,”Sheet1.A2の値”)」の 書き方がわかりません。 Excel2010を使用しています。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- クリーニングができないエラーが発生しており、問題の原因や対処方法がわかりません。
- MFC-850CDNのクリーニングできません 51エラーに関するトラブルや解決策について詳しく教えてください。
- Windows10環境でMFC-850CDNを有線LAN接続し、クリーニングできません 51エラーが発生しています。対策方法を教えてください。
お礼
さっそく 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をかけた結果を表示せよという意味ですか?