划分行,然后在新工作表中传输分割值(值:时间段和数量)

时间:2013-11-08 14:37:54

标签: excel vba excel-vba

希望你能帮忙解决这个问题:

在工作表“TOTALS”和范围“M11:N251”中,有“from:to”用户插入的时间段(“From”在“M11:M”中,“To”在“N11:N”中) 。行数(和插入的时间段)可能会有所不同。时间段是四个月(4个月)但不总是120天(可能是119,122或类似的 - 如果小于100则不允许用户划分)。范围“W11:W251”承载金额。因此,例如,“M11:N11”可以是1/1 / 13-1 / 5/13(dd / mm / yy)而W11只是一个数字(即98,45)。

我希望能够将每个时间段几乎除以2(第一部分可以是60天,第二部分剩余的几天)和相应数量(取决于其分割期间的天数)并转移分割期间相当于一个新的工作表(TOTALS2)到-let的说法范围“A11:B251”& “G11:G251”)

所以,在上面的例子中,在“TOTALS2”中,“A11:B11”中的1/1 / 13-1 / 3/13和“A12”中的1/3 / 13-1 / 5/13 :B12“,相应于”A11:B11“和”A11“的计算天数。 “G12”和“G12”中的“A12:B12”。

依此类推,直到没有更多时间段& TOTALS中的金额用于划分和转移到TOTALS2。

如何做到这一点?想法?

提前致谢!

如果要查看该文件,请下载:

http://www.sendspace.com/file/5kudcy

1 个答案:

答案 0 :(得分:0)

根据您在your link中提供的文件,其中TOTALS中的值从第10行开始(而不是如上所述的11),价格在第S列(而不是如所述的W)和TOTALS2中的值将在第10行开始(而不是如所述的第11行开始)出现以下方法:

向工作表TOTALS添加5列。这5列在第9行有一个标题,在第10,11,12等行有公式。使用X,Y,Z和AA列,X9:AB9中的标题值是

Period, Int.To, Int.From, Proportion1, Proportion2

(其中Int.是中间人的缩写。)

在单元格X10到AB10中使用的公式是:

X10:=N10-M10+1计算从日期M10到日期N10(包括首尾两天)的天数。

Y10:=M10+59计算从日期M10开始的60天期限的结束日期(即计算第一个“半期”的最后日期)

Z10:=1+Y10计算Y10中的日期(第二个“半周期”的开始日期)

AA10:=60/X10上半期占整个期间的比例

AB10:=1-AA10下半期占整个期间的比例

可以将X10:AB10中的公式向下复制为包含工作表TOTALS中的数据的行数,以获得类似...

TOTALS worksheet

TOTALS中的其他列现在提供了将每个四分之一分成两个“一半”所需的信息。 Cols M,N,Y和Z提供日期信息,S,AA和AB提供分割每个四分之一学期成本的值。要在TOTALS2中按需要显示它,您还需要向TOTALS2添加几列。我在L9和M9中使用了列L和M以及以下标题:

Source, Part

在L10和L11中插入值1,而在M10和M11中插入值1和2。现在将以下公式添加到L12和M12

L12:=1+L10

M12:=M10

将L12和M12中的公式复制下来,使列L和M包含的行数至少是您希望分成前半周和后半周的行数(在TOTALS中)的两倍。您应该以L列中的序列1,1,2,2,3,3,4,4 etc和M中的1,2,1,2,1,2,1,2 etc结束。

源列(L)表示TOTALS中的哪个数据行(1 =第一个,2 =第二个,3 =第三个等)作为要分割为“half”和Part列(M)的值的来源)表示它是“一半”(1 =第一,2 =第二)。

剩下的就是使用TOTALS2的A,B和G列中的适当公式将它们放在一起。插入A10,B10和M10的公式为:

A10:=OFFSET(IF(M10=1,TOTALS!M$9,TOTALS!Z$9),L10,0)

B10:=OFFSET(IF(M10=1,TOTALS!Y$9,TOTALS!N$9),L10,0)

G10:=OFFSET(TOTALS!S$9,L10,0)*OFFSET(TOTALS!Z$9,TOTALS2!L10,M10)

将这些公式复制到TOTALS2中的行中,它应该看起来像......

TOTALS2 Worksheet

col A中的公式根据Part值是1还是2,使用来自TOTALS中正确Source行的col M或col Z选择“half”周期的开始日期。类似地,col中的公式B使用TOTALS的cols Y和N选择结束日期。 G中的公式将成本值(TOTALS的col S)乘以TOTALS中col AA或col AB的正确比例,再次根据Part是1还是2。

我没有包含诸如以下的改进:

  • 防止TOTALS中太短(或太长)的句点被分割(提示:您可以使用工作表TOTALS中的长度列检测到这一点)或

  • 控制TOTALS2中显示的行数,使其正好是TOTALS中输入的数据行数的两倍(不太难以及几种方式可以接近)或

  • 将两个“一半”的计算成本四舍五入到小数点后两位并确保它们加回到原始四分之一成本(工作表中的格式化只显示2位小数并且它不保证显示的值会精确地与其原始来源成本相加 - 所选择的例子恰好具有此属性。再次解决起来并不困难。)

但是,以上是您可以构建的基本解决方案。