2017-04-03 12 views
0

最終的にはいくつかのエラーがあるように見えるので、スプレッドシートを変更しようとしています。 以下のコードは、現在のものである:変更後のコンパイルエラー

Range("DP2").Value = "=IF(RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)<0,60+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2),RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)) + RC[-1]" 

問題は、論理が見ている値は、時間(HHMM)であることであり、それは右2(mm)を取り、別の時間(MM)から減算し、値がゼロ以下の場合は、最初に1時間だけ先に仮定して(実際には)60を追加しますが、問題は、その差が1時間以上(2時間、3時間など)例えば1110と0830になります。したがって、60を足しても正しい計算はできません。 私はこのコードを書いた:

IF(RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)<=0, IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=1,60+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2), IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=2,120+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2), IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=3,180+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2),RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2))))) + RC[-1]" 

この1は、時間値(左2 ,, HH)の時間セクションを見て考え、それに応じて60、120または180 を追加するかどうか決定されますしかし、VBAはコンパイルエラーだというコードを受け付けないでしょう!

答えて

0

あなたがそうのように別々の行にあなたの文字列を分割し、VBEで行あたりの文字数を超えました:

Range("D2").Value = "IF(RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]" & _ 
"=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)<=0, IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=1,60+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2), IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=2,120+RIGHT(IF" & _ 
"(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP" & _ 
"(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2), IF(LEFT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-LEFT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2)=3,180+RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2),RIGHT(IF(R1C[-110]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-110],0)),2)-RIGHT(IF(R1C[-111]=RC7,VLOOKUP(RC4,Services!C1:C254,32,0),VLOOKUP(RC4,Services!C1:C254,146+R1C[-111],0)),2))" & _ 
"))) + RC[-1]" 
+0

がこのエラーを解決してきたが、それは、Aを導入して、どうもありがとうございました以前は発生しなかった新しいエラー(古いコード)。 これは不一致があると言います。デバッグのときには、これをハイライト表示します。 line_txt = line_txt&nd_str& "、" これは前のコードでうまくいきましたので驚いています。 – Mahmoud

+0

この場合、問題を試してデバッグする必要があります。どこにもいない場合は、別の質問が必要です。 –

+0

ああ、問題ありません。 ありがとうございます! – Mahmoud

関連する問題