2012-03-13 10 views
2

これで良い検索ができました。私はこれらのループが完全に機能するようには見えないが、私は部分的または別の部分ではあるが完全ではない。最初のループがうまくいけば、それはうまくいく。VBA EXCEL複数のネストされたFORループは、式の変数を2つ設定します。

T発現出力t.Value = time1 - time2
Yの宛先である= time1
Xを変更しない設定された時間と日付時刻と日付であり、対応するyと同じ列に範囲から抽出されなければなりません。 x= time 2

私はループに再配置条件が終了してプレイしてきた私のワークブック

https://docs.google.com/open?id=0BzGnV1BGYQbvMERWU3VkdGFTQS1tYXpXcU1Mc3lmUQ 

の対応するセグメントをアップロードしています。その言葉で作成された大きな体重に気づくまで、私はgotoを試みることさえ考えました。

私はいかなるアドバイスや指示にも感謝しています。私はいくつかの言語が終了し、オプションを続けることに気づいたが、VBは表示されません?

ここで私はそれを動作させるためにしようとしている間に作った混乱を取り除いているループです。

Sub stituterangers() 
Dim dify As Boolean 
Dim difx As Boolean 
Dim time2 As Date 
Dim time1 As Date 

For Each t In range("d7:cv7") 
     For Each x In range("d8:cv11") 
      If x > 0 Then time2 = x   
      For Each y In range("d2:cv2") 
      time1 = y      
     t.Value = time1 - time2 
     t = 0 
       Next y 
     Next x 
Next t 
End Sub 


Sub stituterangersNEW() 
Dim t As range 
Dim x As range 
Dim dify As Boolean 
Dim difx As Boolean 
Dim time2 As Date 
Dim time1 As Date 

On Error Resume Next 

    'Looping through each of our output cells. 
    For Each t In range("d7:cv7") 



    For Each y In range("d2:cv2") 
      If t.Column = y.Column Then 
      time1 = y.Value 
      If y = 0 Then Exit Sub 
       End If 

     For Each x In range("d8:cv11") 
      'Check to see if our dep time corresponds to 
      'the matching column in our output 
      If t.Column = x.Column Then 

       If x > 0 Then 
        time2 = x.Value 

        t.Value = time1 - time2 

        Exit For 
       End If 
      End If 


      Next x 

     Next y 
    Next t 

End Sub 

答えて

1

私は、現時点ではGoogleドキュメントのファイルを取得することはできませんが、

Sub stituterangersNEW() 
Dim t As Range 
Dim x As Range 
Dim dify As Boolean 
Dim difx As Boolean 
Dim time2 As Date 
Dim time1 As Date 

    'You said time1 doesn't change, so I left it in a singe cell. 
    'If that is not correct, you will have to play with this some more. 
    time1 = Range("A6").Value 

    'Looping through each of our output cells. 
    For Each t In Range("B7:E9") 'Change these to match your real ranges. 

     'Looping through each departure date/time. 
     '(Only one row in your example. This can be adjusted if needed.) 
     For Each x In Range("B2:E2") 'Change these to match your real ranges. 
      'Check to see if our dep time corresponds to 
      'the matching column in our output 
      If t.Column = x.Column Then 
       'If it does, then check to see what our time value is 
       If x > 0 Then 
        time2 = x.Value 
        'Apply the change to the output cell. 
        t.Value = time1 - time2 
        'Exit out of this loop and move to the next output cell. 
        Exit For 
       End If 
      End If 
      'If the columns don't match, or the x value is not a time 
      'then we'll move to the next dep time (x) 
     Next x 
    Next t 

End Sub 

EDIT

に答えながら、私が対処しようとするあなたのコードを持ついくつかの問題があります

再生するワークシートが変更されました(新しいSubについては上記を参照)。これはおそらくあなたのニーズを直接スイートにはしませんが、うまくいけば、私はあなたがしたいと思うものの後ろにコンセプトを示すでしょう。このコードは、私がお勧めするすべてのコーディングのベストプラクティスに従っているわけではありません(たとえば、時刻の検証は実際はTIMEであり、その他のランダムなデータタイプではありません)。私はこの出力ましサブ使用

 A      B     C     D     E 
1 LOAD_NUMBER   1     2     3     4 
2 DEPARTURE_TIME_DATE 11/12/2011 19:30 11/12/2011 19:30 11/12/2011 19:30 11/12/2011 20:00     
4 Dry_Refrig 7585.1 0 10099.8 16700 
6 1/4/2012 19:30 

A   B    C    D    E 
7 Friday  1272:00:00 1272:00:00 1272:00:00 1271:30:00 
8 Saturday 1272:00:00 1272:00:00 1272:00:00 1271:30:00 
9 Thursday 1272:00:00 1272:00:00 1272:00:00 1271:30:00 
+0

返信いただきありがとうございます。これは、私の考えで条件付き出口がどのように機能するか、そしてこれに対する私のアプローチが間違っているかどうかを確認するのに役立ちます。このコードと私は前に私はループを同期させることができないとあいまいにしている。 例として列Dを使用します。私は を出力するために1つのセルを出力します。 時間のあるyのセルを1つ返します。 Xは4つのセルd8、d9、d10、d11で構成され、列dのループの1つの値。 – PCGIZMO

+0

本質的には対応するyの値を設定する列dでxの値を4つのセルで検索してTを計算する。Tが計算されると全体を選択して現在の列D CVを通じて。私は正しいアプローチをしていますか?私は、この方法とxの列を介して行を次に行の代わりに次の列をスキャンすることも問題になると思っています。私は約98,99からかなりのプログラミングをしていないし、それはqbasicにあった。だから私は羽を振っています – PCGIZMO

+0

@PCGIZMO 'ああ、私はいつQBの方法で始めました。 :-) 'あなたの質問の中にあなたのデータの例とそれから受け取ると予想される出力を投稿できますか?私はあなたが何を得ようとしているのかまだわからないので、これが私を助けてくれると思う。 dセルの値をすべて同じ(yの値)に設定しようとしていますか? – Gaffi

関連する問題