自从我再次开始使用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
答案 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);
注意:上述代码尚未经过全面测试,仅出于概念目的而提供,以演示可能的算法。