2016-06-10 32 views
-2

从我开始再次使用VBA已经有一段时间了。简单的VBA以增量插入行

我有关于在“0.1”

增量仅适用于情况下的增量插入行的一个问题,当长度>“0.1”

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

当新行插入时

Write 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

+2

我们不是在这里为您编写代码。 C++和mysql和excel与vba有什么关系? –

+0

这看起来像它可以使用一些因子使用正常形式。关键领域是什么? –

+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; 

让我们假设变量entry从数据库(EXCEL或MySQL)读取。

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); 

注:上面的代码尚未全面测试,提供了一种用于概念仅供展示一个可能的算法。