2011-12-22 14 views
0
Set min=min1=1000, max=max1=position=0 
    For i=2 to 10 do 
    min=**MIN(A(i,j):A(i+5,j));** 
    if position=0 then min1=min, position=1 else 
    For j=2 to 10 do {max=**MAX(A(i,j):A(i+5,j));** 
    if max<min then next j else position=0, next i 

私はこの時に新しい午前VBエクセル(問題が太字れる)で上記の次のコードをやろうとしている。おかげでVBのMIN/MAX関数でセルを反復処理する方法は?

+2

コードで太字にすることはできません。さらに、いくつかの行を太字で表示しようとしました。さらに、これはExcel VBAのようには見えません。また、何が動作しないか教えてください。さらに、あなたは何をしようとしていますか? – JMax

答えて

7

あなたがやろうとしているものは明らかではないので、すべてあなたのコードを修正することは不可能です。しかし、次のようにすれば、あなたには始まります。私はアルファベット順にそれらを宣言することを好むが、それは必須ではありません

Dim i As Integer 
Dim j As Integer 
Dim max As Integer 
Dim max1 As Integer 
Dim min As Integer 
Dim min1 As Integer 
Dim Position As Integer 

それはあなたの変数を宣言すると、そのタイプを指定するために、常に最高です。

あなたが必要:

min = 1000 
    min1 = 1000 
    max = 0 
    max1 = 0 
    Position = 0 

Set min=min1=1000, max=max1=position=0に以下の誤りがあります。

  • セットがオブジェクトのみに使用されます。
  • 文をカンマで区切ることはできません。いくつかの言語min=min1=1000
  • min1=1000, min=min1を意味しますが、VBAでそれは意味:

    If min1=1000 Then 
        min=True 
    Else 
        min=False 
    End if 
    

はfor文の末尾にDoはありません。したがって:

For i = 2 To 10 

MINおよびMAXはワークシート関数です。 VBAでこれを使用するには、ワークシート機能であると言わなければなりません。 VBAのステートメントの最後にはセミコロンはありません。 MIN関数でjを使用しましたが、まだ値を設定していません。

MINおよびMAXへのパラメータである値の場所を知ることはできません。

場所はあなたが何か必要な現在のワークシート内にある場合:

With ActiveSheet 
    min = Application.WorksheetFunction.min(.Range("B16:F16")) 
End With 

または多分などを:

With ActiveSheet 
    min = Application.WorksheetFunction.min(.Range(.Cells(i,j),.Cells(i+5,j))) 
End With 

これは、アレイ上MINとMAX関数を使用することが可能であるが、私は配列の一部を選択する方法がないことを知っています。

希望すると、これが始まります。

+2

+1そのようなあいまいな質問に答える時間をとってください:) – JMax

+0

あまりにもあいまいなので、申し訳ありませんが、JMaxは正しいです。主に、私の質問は、ループ内の列を1か所で移動してn個の場所のmin/max機能を実行する方法です。基本的にMIN(A1:An)、MIN(A2:An + 1)、MIN(A3:An + 2)...、nは可変です。配列の一部を選択する方法が分からないので、固定されていないn、つまり配列の可変部分についてこれを行う方法はありません。上記のあなたの答えにとても感謝します:) – user1111530

+0

あなたの元の質問では、2次元の配列にアクセスしているようです。私が言ったことは、MINとMAXを配列内の範囲に適用できるとは思わないということでした。ワークシートにアクセスする場合は、任意のサイズの範囲を指定できます。私の最後のコードブロックを見てください。 'Cells(i、j)'は範囲の開始を示します。 'Cells(i + 5、j)'は範囲の終わりを示します。セル内では、最初のパラメータは行で、2番目のパラメータは列です。配列内の範囲にアクセスするには、これを可能にする他のテクニックがあります。あなたがより明確にしたいことを説明し、おそらくあなたはそれを持つことができます。 –

関連する問題