【问题标题】:Copy more than 255 characters in excel在excel中复制超过255个字符
【发布时间】: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


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多