2016-03-08 152 views
-1

我需要幫助創建一個宏來清理包含產品銷售信息(包括需要使用的裝運方法)的csv表單。我們的產品中有大約10種不能通過我們通常的送貨方式發送,我需要覆蓋分配給包含這些產品的訂單的送貨方式。VBA如何根據同一行中其他兩個單元格的內容編輯單元格內容

  • A欄是爲了數字
  • 列B是產品購買
  • 列C是航運方法

如果有人購買多個產品在一個順序的順序號是在所述重複下一行中,運送方法僅顯示在具有該訂單號的第一行中,並且以相同訂單購買的每個連續產品僅在B列中添加具有產品名稱的新行

我需要使用VBA檢查列B中的10個左右特定產品的列表,並更新整個訂單(C列中與單元格A具有相同值的最高單元格)的裝運方法,如果它包含這10個產品之一。

我認爲它需要做這樣的事情:

  1. 看在B列中搜索文本
  2. 的字符串,如果小區符合搜索條件看值在A列在同一排
  3. 發現這列值的第一個實例的
  4. 新的送貨方式
替換B列的內容在同一行

我會在循環中需要它,以便它對電子表格中列B中的每個搜索字符串實例執行此操作。

我希望這個問題很明確,我已經搜索過並找不到這個問題的答案。歡迎任何幫助或替代修復。

回答

0

嘗試一下下面的代碼,給出的設置,並導致下面的截圖:

Sub test() 

Dim pRange As Range 
Dim nShip As Range 

Set pRange = Range("E2") 
pRange.Select 

While ActiveCell.Value <> "" 

Range("B2").Select 

While ActiveCell.Value <> "" 

If ActiveCell.Offset(0, -1).Value <> ActiveCell.Offset(-1, -1).Value Then 

Set nShip = ActiveCell.Offset(0, 1) 

End If 

If ActiveCell.Value = pRange.Value Then 

nShip.Value = pRange.Offset(0, 1).Value 
ActiveCell.Offset(1, 0).Select 

Else 

ActiveCell.Offset(1, 0).Select 

End If 

Wend 

Set pRange = pRange.Offset(1, 0) 
pRange.Select 

Wend 

End Sub 

首發名單:宏後

enter image description here

結果:

enter image description here

+0

你好,謝謝你我可以看到它會做我需要的東西 - 但是有一個問題,它遍歷每行X我需要檢查的產品數量。 這意味着如果我說1000行和10個產品,它會一個接一個地選擇10000個單元格。 因此,這個宏需要很長時間才能運行,如果有更有效的方法搜索產品購買列以查找要搜索的產品列中的任何項目,我會漫步嗎? –

+0

另外我也認爲,這種方法可能會被削減,如果它不是在尋找一個完全匹配的產品。例如,如果我將產品搜索爲椅子和電視,那麼它將在產品購買清單中將'椅子 - 大'和'Tv -42英寸'視爲匹配。我不知道如何做到這一點? –

+0

對不起 - 沒有意識到多少時間通過屏幕更新關閉,而這正在運行!當它不必擔心向我展示所有內容時快得多! –

相關問題