- 締切済み
vbaでfor nextの計算
vbaでfor nextを使って計算しています。 excelのシートの値を使って計算しています。 for nextが3重になっていて中のyとxのfor next が計算し終わったらjのfor nextで次のセルを参照したいのですがうまくいきません。 どうしたらいいか教えてください。 コードは以下の通りです For j = 1 To 2 Step 1 For y = 3 To 90 Step 3 γ = y / 180 * π For x = -180 To 180 Step 6 α = x / 180 * π γs = Range("A:A").Rows(j).Value / 180 * π αs = Range("B:B").Rows(j).Value / 180 * π Eeg = Range("C:C").Rows(j).Value Eed = Range("D:D").Rows(j).Value 計算式(省略) Next x Next y Next j
- omigawamachi
- お礼率17% (4/23)
- その他MS Office製品
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7940)
For y = 3 To 90 Step 3 γ = y / 180 * π For x = -180 To 180 Step 6 α = x / 180 * π For j = 1 To 2 γs = cells(j, "A").Value / 180 * π αs = cells(j, "B").Value / 180 * π Eeg = cells(j, "C").Value Eed = cells(j, "D").Value '計算式(省略) Next j Next x Next y の順番という事かなと。
関連するQ&A
- EXCEL VBAのFor...Nextについて
VBA初心者です。よく理解していませんので、質問も的を得ていないかもしれませんが、ご指導宜しくお願いいたします。 現在、For...Nextを使った表計算をしています。 A列に「す」という文字が含まれていたら、B列の「す」の行に「あ」と「い」と「え」「か」のセルの合計をだす。C列、D列・・・最終列まで計算する。 上記VBAを作成する方法を教えて下さい。 A B C D E F G H I J K L 1 2 3 4 5 6 7 8 9 10 11 12 あ 1 2 3 4 5 6 7 8 9 10 11 い 10 20 30 40 50 60 70 80 90 100 110 う 20 30 40 50 60 70 80 90 100 110 120 え 40 50 60 70 80 90 10 20 120 130 30 お 50 60 70 80 90 10 20 30 130 140 40 か 60 70 80 90 10 20 30 40 140 150 50 す 私は表に1~12まで数字をインプットし下記のようなコードを考えました。 Sub 列合計() Dim i, k, l, m, n As Long j = 2 For i = 6 To 120 For k = 6 To 120 For l = 6 To 120 For m = 6 To 120 For n = 6 To 120 If Cells(i, 1) = "す" And Cells(k, 1) = "あ" And Cells(l, 1) = "い" And Cells(m, 1) = "え" And Cells(n, 1) = "か" Then Do While j <= Range("A2").End(xlToRight) Cells(i, j) = Cells(k, j) + Cells(l, j) + Cells(m, j) + Cells(n, j) j = j + 1 Loop Else: End If Next n Next m Next l Next k Next i End Sub この内容だとエラーが出てしまいます。 補足ですが、あいうえおかの順番はかわったり、間に他の行が入ったりします。 また今回はL列の間としましたが、もっと列が増え、最終列まで計算する方法を知りたいのですが、どうぞ宜しくお願い致します。 ※ofice2013です。
- 締切済み
- SE・インフラ・Webエンジニア
- Excel VBAにて2の100乗を計算するには
プログラミングの勉強でVBAを学んでいるものです 以下の様な問題を出されました 2の100乗の値を計算する。この値はLong型で表せる最大の値をはるかに超すので、十分な大きさのInteger型の配列を用意し、その各要素で各けたの値を表す。値を2倍するサブプロシージャ「二倍」を書いてプログラムを完成させ、値を計算せよ。 Option Explicit Sub 二の百乗() Const n As Integer = 200 Dim s(n) As Integer Dim i As Integer, j As Integer s(1) = 1 For i = 2 To UBound(s) 'UBoundは配列の最大の添え字を返す関数 s(i) = 0 Next i For i = 1 To 100 二倍 s Next i For i = UBound(s) To 1 Step -1 If s(i) <> 0 Then Exit For Next i For j = 1 To i Cells(1, j).Value = s(i - j + 1) Next j End Sub セル一つに計算結果を表示させられないことはよく分かるのですが、そのための2の掛け算を全く思いつきません 二倍のサブプロシージャをどのようにすればいいのでしょうか
- ベストアンサー
- Excel(エクセル)
- For~Nextの使い方
こんにちは Range("B19").Value = Application.WorksheetFunction.Sum(Range("B4:B17")) Range("B55").Value = Application.WorksheetFunction.Sum(Range("B40:B53")) Range("B91").Value = Application.WorksheetFunction.Sum(Range("B76:B89")) Range("B127").Value = Application.WorksheetFunction.Sum(Range("B112:B125")) 上記を参考書等で見ながらやって見たのですが 動作しません。 For~Nextの使い方を教えて下さい。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim x As Long, g As Long For x = 19 To 127 Step 36 For g = 4 To 112 Step 36 Cells(x, "B").Value = Application.WorksheetFunction.Sum(Cells(g, "B")) Exit For Next Next End Sub
- ベストアンサー
- オフィス系ソフト
- [VBA] for文の3次元ループ
for文の3次元ループがうまく働いてくれません。 8通り(2x2x2)の組み合わせ表示を期待しましたが2通り(y1のみ)のみでループが終わってしまいます。エラーなどはでません。何が原因なのか分かりません。ご指導お願いします。 Public x1 As Single, y1 As Single, z1 As Single Sub Start1() i=1 For x1 = 0.3 To 0.4 Step 0.1 For y1 = 0.5 To 0.6 Step 0.1 For z1 = 0.4 To 0.5 Step 0.1 Cells(i, 1) = x1 Cells(i, 2) = y1 Cells(i, 3) = z1 i=i+1 Next z1 Next y1 Next x1 End Sub
- ベストアンサー
- その他(プログラミング・開発)
- For文によるセル結合について
A1:C1~G1:I1をFor文を使ってセル結合したいのですが 何故かうまく動きません。 For x = 1 to 9 step 3 Range("Cells(x,1):Cells(x+2,1)").Merge Next で試したのですがデバックエラーになり。 For x = 1 to 9 step 3 Range("x&1":"x+2&1").Merge Next でもエラーでした。 本にもCellを両方動かすサンプルが無くて困ってます。
- ベストアンサー
- Visual Basic
- マクロFor Each ~ In Nextについて
いつも回答して頂き感謝しています。 下記のマクロで列を一つづつとばしながら繰り返し処理したいのですがどうすればよろしいでしょうか? For Each h In .Range(.Range("C3"), .Range("IV3").End(xlToLeft)) Set s = Worksheets(h.Value) Next End(xlToLeft))の後ろに Step 1 を入れたらOKと思ったのですが、エラーがかかるので違うみたいです。さっぱりわかりません。御指導の程宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで
いつもお世話になります。 使い方がいまいち分かっていないのでご指導願います。 set Y=range("a1:e5") for each X in Y ・・・・ next X で、恐らくa1からa2,a3と順々にe5まで進んでいると思うのですが。 質問(1)これを1個とばしにする事は可能でしょうか? for n=1 to 10 step2みたいな使い方です。 質問(2)B行をまるまるとばしたい時は如何すればいいのでしょうか? 宜しくお願いします。
- ベストアンサー
- Visual Basic
- VBA For~Next
「wsData」の値を「wsInv」の指定セル(=●●●=16)から4つおきに処理したい。 01:Cells(16 + i * 4, 1) とすると「i」が大きいときに 「""」があると16からスタートしない 02:「For k = 0 To 50」を作成したが、何処に入れても上手く処理出来ない。 For i = 0 To 50 '行 For j = 6 To 28 '列 If wsData.Cells(10 + i, 3).Value = "" Then wsInv.Cells(●●●, 1).Value = wsData.Cells(10 + i, 1).Value wsInv.Cells(●●●, j - 2).Value = wsData.Cells(10 + i, 23 + j).Value End If Next j Next i お力添えをお願いいたします。
- ベストアンサー
- Visual Basic
- EXCEL VBA のFor~Next文で質問です。
お世話になります。VBA初心者です。 環境はWIN2000,EXCEL2000です。 下記のようなマクロを組んだらNextに対するForがありませんと、エラーが出てしまいました。 申し訳ありませんが、手直しお願いします。 やりたいことは、D97へコピーが終わったら、次はM7からコピーをし、M97へのコピーが終わったらV7からコピーを始めたいのです。 With sheetGR For ii = 7 To 97 Step 10(行の指定) For iii = 4 To 31 Step 9(列の指定) If .Cells(ii, iii) = "" Then .Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _ = Sheets("Result").Range("G20:I24").Value End If Exit For If Cells(97, iii) <> "" Then Next iii End If Next ii End With
- ベストアンサー
- Windows NT・2000
- べき乗の計算が遅い理由
VBAを使っていてふと気づいたことなのですが、 x ^ 2とx * xは計算結果は全く同じなのですが、x * xの方が6倍程度速く計算することができます。 Sub test() start_time = Timer For j = 1 To 10000 For i = 1 To 1000 y = i ^ 2 * j ^ 2 Next Next zikan = Format(Timer - start_time, "0.00") End Sub というプログラムの計算時間が3.80秒なのに対し、 y = i ^ 2 * j ^ 2をy = i * i * j * jに書き換えて実行すると 0.66秒になります。 恐らく、x ^ 2とx * xで計算アルゴリズムが異なるからだと思うのですが、 一般的によく知られたことなのでしょうか? また、どのようにアルゴリズムが異なるのでしょうか? また、VB以外の他のプログラミング言語にも見られるのでしょうか? ちなみに、 Function bekijou(x, y) bekijou = 1 For q = 1 To y bekijou = bekijou * x Next End Function という関数を作って、 y = bekijou(i, 2) * bekijou(j, 2)で実行してみたところ、計算時間は更に伸びて、 9.47秒になってしまいました。 これ以外に意外と知られていない計算速度を上げるためのコツなどがありましたら 教えてください。
- ベストアンサー
- Visual Basic