使用if else的Excel宏,while循环

时间:2014-07-15 03:33:18

标签: excel excel-vba vba

enter image description here

我正在尝试通过宏获取格式。基本上,我的想法是,如果我有大量的数据,如果材料类型是B,那么宏只会在它下方创建一个空白行,只要"平衡"选项卡不是零。最后,余额将乘以价格/ pax以获得总价格。

我正在考虑使用if else,虽然循环是可能的,但我不知道如何去做。 算法我在想..

         If Material type= B;
while Balance /= 0;
*create another empty role*;
Balance= Qty- Qty used;(a summation of all QTY used)
Tot.Price=Balance*Price/pax;
else,
ends

宏是否能够引用标题并更新?关于我应该怎么做或改变的任何建议?

谢谢马特。我希望它成为一个反应性的"宏,即每当我输入一个新值到QTY使用col时,宏就会运行。可能吗?材料类型B可能会出现多次,宏可以为所有B工作,但不会相互影响吗?

运行宏后,

enter image description here

60可以从旧余额值中参考,减去并返回新的余额值吗?这意味着410将取代470.额外的行应该低于60.感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为你的伪代码正在走上正轨。我通常会这样做的方法是识别数据集的最后一行并向后循环(因为你沿途插入行)直到你到达顶部。所以,像这样

finalRow = cells(65000,1).end(xlup).row
for i = finalRow to 2 step -1
  cells(i,7) = cells(i,5) - cells(i,6)
  cells(i,9) = cells(i,7) * cells(i,8)
  if cells(i,10) = "B" and cells(i,7) <> 0 then
    cells(i+1,1).entirerow.insert
  end if
next i