我的问题与这里提出的问题非常相似: 在重叠间隔中查找基本间隔
我喜欢那里给出的最佳解决方案,但由于我需要保留一条额外的关键信息,我需要对算法进行一些调整/进一步解释。作为背景,这些数字是数据库中参与者的年龄范围。我需要计算重叠,以便我可以在重叠的研究实验室之间平均分配参与者,如果没有重叠,我可以将所有参与者分配给那个实验室。
这就是我得到的:
Interval Lab
{75, 105} A
{100, 120} B
{100, 130} C
Run Code Online (Sandbox Code Playgroud)
这是我想从输入中得到的(所以我知道要查询什么):
Interval Lab(s)
{75, 100} A
{100, 105} A, B, C
{105, 120} B, C
{120, 130} C
Run Code Online (Sandbox Code Playgroud)
使用上一个问题中给出的顶级算法,我可以轻松得到嵌套:{75, 100, 105, 120, 130} 这导致间隔:{75, 100} {100, 105} {105, 120} { 120、130}。这很好,但现在我不知道哪些间隔对应哪些实验室(无需再次遍历列表,逐个检查每个实验室,这可能效率低下)。
谁能向我解释如何轻松做到这一点?感谢您的帮助!
我查了一些例子,但我不太明白 Range 对象是如何工作的。我试图循环遍历每个标题(第 4 级),并使用一个嵌套循环来遍历标题之间的所有表格。我不知道如何设置该特定范围,因此任何帮助将不胜感激。
Dim myHeadings As Variant
myHeadings = ActiveDocument.GetCrossReferenceItems(wdRefTypeHeading)
For iCount = LBound(myHeadings) To UBound(myHeadings)
level = getLevel(CStr(myHeadings(iCount)))
If level = 4 Then
'This is where I want to set a range between myHeadings(iCount) to myHeadings(iCount+1)
set aRange = ??
End If
Next iCount
Run Code Online (Sandbox Code Playgroud)