gpt4 book ai didi

vba - 循环遍历行以将值均匀地拆分到新的电子表格中

转载 作者:行者123 更新时间:2023-12-04 21:04:58 26 4
gpt4 key购买 nike

我是 VBA 新手,我的任务是更新现有宏以自动化我们的部分工作流程。基本上,当前的宏从一个电子表格中获取 customer_ids 并将它们导出到一个新的 CSV 文件中,然后由经理将其转交给销售人员。我们有一个可以直接将客户分配给销售人员的程序,但格式必须是仅包含 customer_ids 的单列 CSV 文件,并且每个 CSV 文件都需要为每个单独的销售人员命名。当有多个销售人员分配到一个区域时,我的问题就开始了。在这种情况下,我需要遍历特定区域的 customer_ids,并让它们在该区域的销售人员中平均分配。

EX:
There are 2 salespeople for region A (call them A1 and A2),
and 2 other salespeople for region B (B1 and B2).

customer_id | region
123 A
234 A
345 A
456 B
567 B
678 B
789 B

需要过滤掉上表,以便将客户 123、234、345 平均拆分为 2 个新文件:一个用于 A1,一个用于 A2(意味着一个文件将有一个额外的客户,这很好)。区域 B1 和 B2 文件中的客户 456、567、678 和 789 也是如此。

我假设我需要一个递归循环来执行此操作(尽管我听说循环在 VBA 中很糟糕)。但是我不确定从哪里开始以便在新文件之间均匀分配 customer_ids。

我将衷心感谢您的帮助!谢谢!

最佳答案

尝试这样的事情:

Application.ScreenUpdating = False
set A1 = Sheets.add
set A2 = Sheets.add
set B1 = Sheets.add
set B2 = Sheets.add
for each cell in customer_id column (replace this with the column)
if cell.offset(0,1) = "A" Then
if 1a >= 2a then
A1.cells(1a,1) = cell
else if 2a > 1a then
A2.cells(2a,2) = cell
end if
Else If cell.offset(0,1) = "B" Then
if 1b >= 2b then
B1.cells(1a,1) = cell
else if 2b > 1b then
B2.cells(2a,2) = cell
end if
End if
next cell

dest = "C:\" ' Set where you want the files to be saved here

A1.SaveAs dest & A1, xlCSV '(Where A1 is your salesperson name)
A2.SaveAs dest & A2, xlCSV '(Where A2 is your salesperson name)
B1.SaveAs dest & B1, xlCSV '(Where B1 is your salesperson name)
B2.SaveAs dest & B2, xlCSV '(Where B2 is your salesperson name)
application.displayalerts = False
A1.delete
A2.delete
B1.delete
B2.delete
application.displayalerts = True
application.screenupdating = True

警告:这是未经测试的,我从今天早上 7 点开始工作(现在是凌晨 2 点)

关于vba - 循环遍历行以将值均匀地拆分到新的电子表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com