该公司提供各种各样的Excel报告,尽管不是我的工作,也不是专家,但我还是帮他们一把:)
其中一个报告是100K +单元格的每日矩阵,由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个字符单元格中读取时(我认为)。
任何解决方法,对于一个文盲,我有想法,我正在尝试替代方案,但会在本报告中改变分析师的工作流程
答案 0 :(得分:0)
请改为尝试:
Sub SingleColumnSelection()
Dim rngOut As Range
Dim rngSelection As Range
Dim rngCol As Range
Set rngSelection = Selection
Set rngOut = Application.InputBox("Select destination", Type:=8).Resize(rngSelection.Rows.Count, 1)
If rngOut Is Nothing Then Exit Sub
For Each rngCol In rngSelection.Columns
rngCol.Copy Destination:=rngOut
Set rngOut = rngOut.Offset(rngSelection.Rows.Count)
Next rngCol
End Sub