我在几个论坛和网站上寻找了一种方法,但没有发现任何线索...... 希望可以有人帮帮我!
以下是我拥有的数据示例:
我希望对这些单元格进行排列,输出对反映特定学生在这些组中进行交互的次数。 换句话说,它是一个简单的组合。对于每个小组,
请注意,每个学生群都有不同数量的学生。
因此,输出将是这样的:
这是我的第一篇文章,但我希望我说得够清楚。
答案 0 :(得分:0)
免责声明:当您尝试解决问题时,阅读rules in StackOverflow关于提问和提供一些代码的确是个好主意。 StackOverflow不是免费的编码服务等。
Howerver,至少你拍了截图,这是什么。在某种方式。
下一步尝试将Excel单元格的值传递给数组或列表(无论您想要什么)。就我而言,我已将其硬编码为group1
和group4
。这些组是数字而不是名称的一致,因为这种方式更快一点,更容易理解。在您的示例中,您可以考虑在最后重新映射它们:
Public Sub TestMe()
Dim group1, group4
Dim groupOfAll, group
Dim student
Dim cnt As Long
Dim cnt2 As Long
group1 = Array(1, 2, 3)
group4 = Array(4, 5, 6, 7)
groupOfAll = Array(group1, group4)
For Each group In groupOfAll
cnt2 = 1
For Each student In group
For cnt = LBound(group) + cnt2 To UBound(group)
Debug.Print student; "<>"; group(cnt)
Next cnt
cnt2 = cnt2 + 1
Next student
Debug.Print "----party------"
Next group
End Sub
代码中棘手的部分是每个人循环每个人,但是在你完成第一个人之后,你不会再次循环他。这是通过For cnt = LBound(group) + cnt2 To UBound(group)
和cnt2=cnt2+1
实现的。 cnt2 = 1
,因为我们从位置0的数组中的第一个元素开始,我们引入&#34;这个学生到下一个。这是结果:
1 <> 2
1 <> 3
2 <> 3
----party------
4 <> 5
4 <> 6
4 <> 7
5 <> 6
5 <> 7
6 <> 7
----party------
答案 1 :(得分:-1)
不幸的是,我没有设法在VBA中对此进行编码。相反,我用Python做到了。这是代码,如果有人也需要这个代码:
from itertools import combinations
groups = open("C:\file.csv", "r")
students = groups.readlines()
for line in students:
students2 = line.split(",")
students3 = list(combinations(students2, 2))
for edges in students3:
edges2 = str(edges)
print(edges2)
groups.close()
无论如何,谢谢大家。