2011-03-09 51 views
0

該公司的Excel的一個巨大的分類報告,儘管不是我的工作,也不是它是專家,我給他們的手:)在Excel中複製

其中一個報告是一個超過255個字符日常矩陣的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個字符單元格讀取時(我認爲)。

任何解決方法,以一個excel文盲,我有想法,我想辦法,但會改變本報告中的工作流的分析師

+0

多少列這個100 + K矩陣有嗎? – 2011-03-09 11:39:19

+0

電子表格在哪個格式? Outlook 2007(xlsx/xlsm)或Outlook 97-2003(xls)? – paulmorriss 2011-03-09 16:51:16

回答

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