【发布时间】:2011-03-09 10:17:37
【问题描述】:
公司有各种各样的 Excel 报告,尽管不是我的工作,也不是这方面的专家,但我还是帮了他们一把 :)
其中一份报告是由 10 万多个单元组成的每日矩阵,分配给 8 位分析师,他们从中获取链接列表和来自已创建实体的其他杂项数据。在他们的报告中,每位分析师都将所有列转换为一个列(想想数百列,一一复制),按名称排序,检索所有 http... 并放入工具进行链接检查。
除了删除重复项和空单元格的宏之外,我还编写了一个将单元格矩阵转换为单列的宏。它通过选择假装的单元格、运行宏、指向目标并完成它来工作。
这里是:
Sub SingleColumnSelection()
Dim v As Variant
Dim nCol As Long
Dim nRow As Long
Dim rOut As Range
Dim iCol As Long
v = Selection
nRow = UBound(v, 1)
nCol = UBound(v, 2)
Set rOut = Application.InputBox("Select destination", Type:=8).Resize(nRow, 1)
If rOut Is Nothing Then Exit Sub
For iCol = 1 To nCol
rOut.Value = WorksheetFunction.Index(v, 0, iCol)
Set rOut = rOut.Offset(nRow)
Next iCol
End Sub
我 2 个月前做的,现在他们告诉我有时他们有问题,我去挖掘并发现 2 个破坏宏的链接(在 20k 报告中)。
两者都有大约 300 个字符,并且应用程序在 rOut.Value = WorksheetFunction.Index(v, 0, iCol) 中的 255 个字符后中断,当它从 >255 个字符单元格中读取时(我认为)。
任何解决方法,对于 excel 文盲,我有想法,我正在尝试替代方案,但会改变本报告中分析师的工作流程
【问题讨论】:
-
这个 100+K 矩阵有多少列?
-
电子表格采用哪种格式? Outlook 2007 (xlsx/xlsm) 还是 Outlook 97-2003 (xls)?
标签: excel excel-2007 vba