2016-10-24 23 views
0

単純なループコードを使用して、1つのシートから別のシートにデータをインポートする場合は、以下のコードを適切に使用します。ネストされたIFステートメントVBA

私はLENが7合計上記のすべての値アップよりも大きければ、彼らはにすることが可能であるので、最後まで値が値7 LENとグループよりも大きかったことをIF文を追加したいと思います
  Dim y As Integer 
      y = 15 
      For X = 15 To LR Step 1 
      If Len(WS.Range("B" & X)) >= 7 Then 
       WS.Range("B" & X).Copy 
       WS1.Range("E" & y).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
       :=False, Transpose:=False 

      y = y + 1 
      Else 
      End If 
      Next X 

小計。

私はこれが私の現在のコードにネストされたIFステートメントであると思いますが、ポイントをどのように参照するかはわかりません。

私が現在持っているものとあなたの助けを借りて達成したいものを説明するのに役立つ写真が追加されました。 enter image description here

+1

なぜあなたはそれらをループしているときに値を格納する長さが7より大きい場所に到達すると、カウンターの値を表示してそれをクリアして再度使用できるようにするだけです。また、私はあなたのコードを完全に理解していません。 x&yは何を表していますか?あなたの写真は行3で始まりますが、変数は15で始まります。私はあなたのプロセスに苦労しています。 – PartyHatPanda

+0

XとYはループに使用される変数です。これは、最終結果の草案だったので、これはテーブルの写真と一致しないと言いました。ありがとうございました。私はこれまでに使ったことのないカウンター変数を調べて、これを簡単に手に入れることができると期待しています。 :)あなたの提案をありがとう –

+0

用語カウンター変数を恐れてはいけません。それが意味するのは、ループが進むにつれてデータを保持して追加する変数です。 'total = total + newNumber'と考えてください。ここでtotalは、使用する必要があるまで、totalに新しい数字を追加し続けます。 – PartyHatPanda

答えて

0

このアプローチを試してみてください:まず、私は15iSR値を割り当てた変数Integerタイプ

Dim iSR As Integer: iSR = 15 

注意を宣言します。この変数を使用してStarting Rowの番号を保持するので、数字が始まる行番号を割り当てるようにしてください。テキストの長さがより大きい場合IF条件チェック:今、どこIf Len(WS.Range("B" & X)) >= 7 Then状態が終了し、Next X前に、すぐにコードを説明するために

If Len(WS.Range("B" & x).Value) > 7 Then 
    oWS.Range("C" & x).Formula = "=Sum(C" & iSR & ":C" & oWS.Range("C" & x).Offset(-1).Row & ")" 
    iSR = oWS.Range("C" & x).Offset(1).Row 
End If 

(そのまだあなたFORループ内のように)次のコードを追加します7.そうであれば、テキストがある同じ行の "C"列にSUMの数式を割り当てます。 Formulaは、iSRを開始行として使用し、Offsetを使用して、現在の行より前の行の行番号を取得します。次の行は、現在の行の次の行の行番号を取得するだけで、次のものを知ることができます。数値が

+0

これは大変ありがとうございました! :) –

0

提案

Dim y As Integer 
y = 15 
Total = 0 
For x = 15 To LR Step 1 
    If Len(ws.Range("B" & x)) > 7 Then 
     ws1.Range("E" & y) = Total 
     Total = 0 
     y = y + 1 
    ElseIf Len(ws.Range("B" & x)) = 7 Then 
     ws.Range("B" & x).Copy ws1.Range("E" & y) 
     Total = Total + ws.Range("B" & x) 
     y = y + 1 
    End If 
Next x 
関連する問題