次のようなデータがあります。
A B
1 200
2 -350
3 500
4 -260
5 ・
6 ・
実際には600ほどあります。
次のように0>大きいものと0<ものの数をだすためにIF分を使ったのですが時間がかかってしょうがないのですがもっと早くやる方法はありますか教えてくださいよろしくお願いします。
実際に使っているものです。
抜粋したので少し構文が違うかもしれませんが要するに勝率を出したいのです。
Dim a, b, Sr As Double
Cau = 7
For x = 1 To 5
shi = "あきない0"
shi = shi & x
r = Sheets(shi).Range("A65536").End(xlUp).Row
For i = 90 To r
Sheets("MAIN").Cells(Cau, 9) = "計算中"
Sr = Sheets(shi).Cells(i, 10).Value
If Sr >= 0 Then
'Sheets("MAIN").Range("G6") = Sr
'Sheets("MAIN").Range("G7") = a
a = a + 1
Else
b = b + 1
'Sheets("MAIN").Range("H6") = Sr
'Sheets("MAIN").Range("H7") = b
End If
Sheets("MAIN").Cells(Cau, 9) = ""
Next i
If shi = "あきない01" Then
Sheets("MAIN").Range("Y9") = a
Sheets("MAIN").Range("Y10") = b
Sheets("MAIN").Range("I11") = a / (a + b)
End If
省略-------------------------------------繰り返し
a = 0
b = 0
Cau = Cau + 5
Next x
No.3ベストアンサー
- 回答日時:
>VBAではどのコマンドを使えばできますか?
xls88さんもおっしゃるようにVBA上でワークシート関数が使えます。
Sub Macro1()
Range("Y9").Value = WorksheetFunction.CountIf(Sheets("あきない01").Range("A90:A65536"), ">=0")
End Sub
とかです。
但し、VBAで結果をえるには、ボタンをクリックするなど何らかのイベントが必要ですよね。
シート上に直接、関数を入れておけば常に計算結果が更新されますので
便利でしょう。
できました!! 今までは計算に4-5分かかっていました即計算ができますこれで便利に使わせてもらえます。
ありがとうございました。
No.2
- 回答日時:
No.1
- 回答日時:
これは、VBAの勉強ということでしょうか。
実践ということであれば、関数の方が便利で簡単で早いと思います。
引継ぎなども簡単でしょう。
シート MAINの Y9セルに シート名 あきない01 の90行以下の範囲で、0以上値の数
であれば =COUNTIF(あきない01!A90:A65536,">=0")
0未満は =COUNTIF(あきない01!A90:A65536,"<0")
I11セルは =Y9/(Y9+Y10) ですみませんか。
VBAの勉強だとしたら、コードでどの様な処理の流れになっているかフロー図にしてみると良いです。
難しく考えずに
For x = 1 To 5 Xはシート名?
For i = 90 To r 90行以下の行で繰り返し
If Sr >= 0 Then
計算の処理
EndIf
Next i
If shi = "あきない01" Then
シート名が あきない0 なので何も処理しない
End If
これはまったく無駄な処理ですよね。
この回答への補足
早々、ありがとうございます。
関数では教えていただいたと通りやってみて早く計算ができました。
VBAではどのコマンドを使えばできますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルの複数シートの保護を...
-
エクセルで前シートを参照して...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
スプレッドシートの関数VLOOKUP...
-
エクセルでファイルを開いたと...
-
複数シートの特定の位置に連番...
-
Excelで金銭出納帳。繰越残高を...
-
EXCELで同一フォーマットのシー...
-
エクセルのシート名をリスト化...
-
エクセル計算式解説
-
Excelのシートを、まとめて表示...
-
EXCEL:同じセルへどんどん足し...
-
複数シートの固定のセルの値を...
-
複数のピボットを同じフィルタ...
-
Excel、同じフォルダ内のExcel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
おすすめ情報