我怎样才能根据通过VBA的比例在Excel中sorting行?

第一次张贴在这里,所以希望我会给足够的信息,以获得一些帮助。

我有一个数据集在Excel中包含多个客户端在第1列,我想要基于比例在10块的比例。因此,例如,如果比例是60/40之间的客户端1和2它需要订购6行客户端1,4行客户端2,6行客户端1,4行客户端2直到数据结束。

有什么办法可以做到这一点,无论是通过在Excel中sorting或使用VBA,我已经尝试了几天,并难倒了。

谢谢。

希望这可以帮助。 这将把你的区块放在一列旁边。 我没有testing这个,但希望这个想法能让你在某个地方。

Sub ClientRatios() 'DataSet is in range A:A 'Make the ratios of the Clients Add up to 10 'You can have a maximum of 10 clients Dim Nextempty As Range Dim j As Long Dim i As Long 'Repeat the following idea for each client and you should get what you're looking for '+++Client1+++ '================================= i = Range("Clinet1_Ratio") ClientName = Range("Clinet1_Name") '================================= Total = Application.WorksheetFunction.CountIf(Range("A:A"), ClientName) Do While Total < 0 j = i c = 2 Do While j > 0 If j > Total Then j = Total Nextempty = Cells(Cells.Rows.Count, Columns(c)).End(xlUp).Row + 1 Nextempty = ClientName j = j - 1 Loop c = c + 1 Total = Total - i Loop '+++Client2+++ 'Do the same for all 10 clients End Sub 

欢迎来到SO。 这不是一个代码写作服务,所以我会给你一个如何解决这个问题的想法。

我build议您使用Microsoft Scripting Runtime库(包含在Windows中)中的Dictionary对象。 链接这里和这里

  1. 将源数据读入dictionary以便存储客户端名称和每个名称的计数。
  2. 循环遍历您的比例单元格,每次在字典中编写客户端名称,然后减less计数。 如果一个名字的count = 0,那么不要写出这个名字。
  3. 当所有客户端名称在dictionary = 0时计数,然后退出循环,你就完成了。