简单的VBA以增量插入行

时间:2016-06-10 21:42:36

标签: excel vba excel-vba

自从我再次开始使用VBA以来已经有一段时间了。

我有一个关于以" 0.1"

的增量插入行的问题

增量仅适用于Length>的情况。 " 0.1"

=============================================== =====

插入新行时

写入ID,Route_ID,NEW Begin_Point,NEW End_Point,NEW Length(NEW End_Point - NEW Begin_Point)

插入行直到长度为< " 0.1"

=============================================== =====

请帮我解决这个问题或向我发送任何可以完成此操作的vba代码。指定问题以及期望答案的格式如下。

我真的很感谢你的帮助!

  

问题

     

ID | Route_ID | Begin_Point | End_Point | 长度 |

     

1105 | A_ST | 1.166 | 1.271 | 0.105

     

99 | C_BLVD | 0 | 0.08 | 0.08

     

24 | B_AVE | 0.447 | 0.627 | 0.18

     

期望的答案

     

ID | Route_ID | Begin_Point | End_Point | 长度 |

     

1105 | A_ST | 1.166 | 1.266 | 0.1

     

1105 | A_ST | 1.266 | 1.271 | 0.005

     

99 | C_BLVD | 0 | 0.08 | 0.08

     

24 | B_AVE | 0.447 | 0.547 | 0.1

     

24 | B_AVE | 0.547 | 0.627 | 0.08

1 个答案:

答案 0 :(得分:0)

由于您使用c++标记了您的问题,因此我假设您需要C ++语言帮助。

让我们从定义记录的结构开始:

struct Record
{
    unsigned int id;
    std::string  route_id;
    double       begin_point;
    double       end_point;
    double       length;
};

我的理解是你要生成新的段,直到所有段的长度都小于或等于0.1。

为方便起见,我们将记录存储到std::vector

std::vector<Record> table;

假设从数据库(excel或mysql)读取变量entry

while循环可用于创建多个细分:

Record entry; 
// Input the entry here.
//...
while (entry.length > 0.1)
{
  Record segment = entry; // Make a copy to generate a new segment.
  if (segment.length > 0.1)
  {
    segment.length = 0.1;
    entry.length -= 0.1;
    segment.end_point = segment.begin_point + segment.length;
    entry.begin_point = segment.end_point;
    table.push_back(segment);
  }
}
table.push_back(entry);

注意:上述代码尚未经过全面测试,仅出于概念目的而提供,以演示可能的算法。