[英]Take results from one sheet and move them into many other sheets
我已經對這個問題進行了類似的回答,但是無論我做什么,我都無法讓他們做我需要的事情。
我每天都有一封電子郵件,其中包含一個CSV文件,其中提供了我們銷售團隊前一天的通話統計信息。 我需要將它們放入Excel中以提供當年的趨勢和歷史通話活動。 沒有VBA或宏,這是一個非常耗時的過程。
它提供的統計信息是呼叫次數和平均呼叫時長(這很重要),我已經有了VBA來計算總傳出量:
Dim Call_Number As Integer
Dim Call_Time As Date
Dim Call_Total As Date
Call_Number = .Cells(2, 6).Value
Call_Time = .Cells(2, 7).Value
Call_Total = Call_Number * Call_Time
.Cells(12, 7).Value = Call_Total
因此,我需要為每個銷售成員提取3個單元格,然后將其移至相對表中正確的位置,並按名稱將其分隔開。 如果目標單元格已滿,我還需要它移至右側的下一個單元格,因此我想我需要從1月1日開始粘貼過程,並繼續向右移動,直到找到空白單元格。 有沒有一種方法可以通過按鈕或自動完成?
我將第一個工作表用作數據導入工作表,在這里我們只是將數據導入到csv中,並且由於它是標准格式,因此每天都會以正確的格式給出所有信息。
到目前為止的代碼。 它沒有錯誤,但是不做任何事情:
Sub Move_Data()
Dim Dean As Worksheet
Dim Chris As Worksheet
Dim Paul As Worksheet
Dim Nigel As Worksheet
Dim Calc As Worksheet
Dim Lastrow As Long
Dim J As Long
Dim i As Long
Set Dean = ThisWorkbook.Worksheets("DEAN 822")
Set Chris = ThisWorkbook.Worksheets("CHRIS 829")
Set Paul = ThisWorkbook.Worksheets("PAULP 830")
Set Nigel = ThisWorkbook.Worksheets("NIGEL 833")
Set RUSSELL = ThisWorkbook.Worksheets("RUSSELL 835")
Set Calc = ThisWorkbook.Worksheets("Calculation Sheet")
Lastrow = Range("C" & Dean.Columns.Count).End(xlToRight).Column
J = 2
For i = 0 To Lastrow
Set Rng = Dean.Range("C5").Offset(i, 0)
If Not (IsNull(Rng) Or IsEmpty(Rng)) Then
Calc.Cells(2, 4).Copy
Dean.Range("c" & J).PasteSpecial xlPasteValues
J = J + 1
End If
Next i
Application.CutCopyMode = False
End Sub
代替
Lastrow = Range("C" & Dean.Columns.Count).End(xlToRight).Column
我想你要
Lastrow = Range("C" & Dean.Columns.Count).End(xlUp).Row
“我還需要……一個按鈕還是自動?”
LastCol = WshtName.Cells(CrntRow, Columns.Count).End(xlToLeft).Column
會將LastCol
設置為LastCol
行中最后使用的列。
J = 2
For i = 0 To Lastrow
Set Rng = Dean.Range("C5").Offset(i, 0)
If Not (IsNull(Rng) Or IsEmpty(Rng)) Then
Calc.Cells(2, 4).Copy
Dean.Range("c" & J).PasteSpecial xlPasteValues
J = J + 1
End If
Next i
Application.CutCopyMode = False
我不確定此代碼正在嘗試什么。
它將Rng
設置為C5,C6,C7,C8,...到Cn,其中n為Lastrow + 5。 例如,如果C5為空,則將C2復制到Calc.Cells(2,4)。
您是否要將C列從工作表Dean復制到工作表Calc的B列?
如果清除空單元格並不重要,那么它將更快更清晰:
Set Rng = Dean.Range(.Cells(5 ,"C"), .Cells(Lastrow ,"C"))
Rng.Copy Destination:=Calc.Cells(2, 4)
回應評論的新信息
我無法根據您的描述顯示您的源數據或目標數據,因此無法提供任何具體建議。
歡迎使用堆棧溢出。 我相信這是查找以前發布的信息的好地方,也是發布新問題的好地方,但是您必須遵循網站規則。
頂部欄中中心的右邊是“幫助”按鈕。 單擊此並閱讀如何使用此站點。 了解如何發布將被歸類為好問題並能快速,有效地回答的問題。
我相信您的問題最大的三個問題是:
為了避免提出過多要求,您必須將需求分為幾個小步驟。 以下是我根據您對所尋找內容的猜測來確定必要的小步驟的嘗試。
包含員工詳細信息的CSV文件作為日常電子郵件的附件到達。 您是否手動保存這些附件? 用於保存附件的Outlook VBA宏將不難編寫。 我建議您將其留待以后使用,但是如果您在Stack Overflow中搜索“ [outlook-vba]保存附件”,則會找到相關的代碼。
上面顯示了我如何搜索堆棧溢出。 我從語言標簽開始,然后加上一些關鍵詞或關鍵詞。 有時,我需要花一些時間才能找到正確的搜索詞,但我很少能找到有趣的東西
您如何將CSV導入Excel? 您是手動執行此操作嗎? 有許多可能的VBA方法。 嘗試搜索“ [excel-vba] xxxx”,其中xxxx描述您的首選方法。
我認為CSV文件的結構非常簡單,並且在各個行中查找信息沒有困難。 您似乎知道找到最后一行的最簡單方法,因此您無需費力即可創建一個循環處理各行。
您如何將CSV文件中工作人員的姓名與工作表的姓名相關聯? 在您的問題中,您具有工作表名稱,例如“ DEAN 822”,“ CHRIS 829”和“ PAULP 830”。 這些是CSV文件中使用的名稱嗎? 新員工加入后會怎樣? 我懷疑這種情況經常發生,但是您不希望在發生這種情況時修改宏。
我不理解您對將新數據添加到任何現有數據右側的要求。 每天將有三個值,因此每年大約有200個工作日,即600列。 對我來說,這很尷尬。 我本來以為每天一排會更方便。
您將如何運行宏? 您提到一個按鈕或自動。 我不喜歡按鈕,因為我發現工具欄已經足夠混亂了。 我更喜歡使用快捷鍵,例如Ctrl + q 。 每個這種工作簿我很少有一個以上的宏,因此對我來說效果很好。 自動,我假設您的意思是打開工作簿時宏將自動運行。 我將從快捷鍵開始,但是當您准備就緒時,請查找“事件”和“事件例程”。 您將找到有關如何在工作簿打開時自動啟動宏的說明。
希望以上內容對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.