2017-04-13 8 views
0

私はこれに対するVBAソリューションを探していません。 目標は、2015年7月1日から12ヶ月間にジョンが何時間作業したかを調べることです。 私は2つのワークシートを持っています。ワークシート1には、以下のようになります。日付は限りスプレッドシートが許容するようダウンすることができる2つの配列演算、Excel、非VBA

Date |  John   | Jane   | Joe 
    7/1/2015 |  3    | 2   | 2.5 
    7/2/2015 |  3    | 2.5   | 0 
    rest of attendance data 

Name |  Date Start  | Total Hours 
John |  7/1/2015  | Formula goes here 

ワークシート。私がしようとしているのは、ワークシート式に関数を保持することです。私が今持っている式は次のとおりです。

=SUMIFS(Worksheet2!B:B, Worksheet2!$A:$A, ">="&Worksheet1!$B2, Worksheet2!$A:$A, "<="&EDATE(Worksheet1!$B2, 12)) 

私はVBAを介してこれをしなかった場合、私はのような何かを行うことができます:

Range("B"&2 & ":" & "B" & 1058476) 

をしかし、私は何列の人を探すためにいくつかの方法を探しています、玉葉名前は列のシート1にあり、列の名前はシート2でどの列にあるか。次に、シート2のその列の12ヶ月間のすべての値を合計し、その数値をワークシート1のセルC2に入れます。私はWorksheet2を使用したくない!B:B。

+0

Nevermind!私はこれに答えました:= SUMPRODUCT(OFFSET(出席!$ A $ 1、0、1、368)) – bdpolinsky

答えて

1

オフセットを使用してください。

=SUMIFS(OFFSET(Worksheet2!A:A,0,MATCH(Worksheet1!$B1,Worksheet2!$A2:$A100,0)), Worksheet2!$A:$A, ">="&Worksheet1!$B2, Worksheet2!$A:$A, "<="&EDATE(Worksheet1!$B2, 12)) 

は、正しい列を取得する必要があります。