2013-05-14 33 views
-3

我正在做一個啓發式分析和我有以下問題:VBA的發現與通過macro.Excel替代許多

我想和J列匹配的列d數字中尋找,並通過替換它們「0」。你可以看到什麼,我想在這個圖像上做的:http://imageshack.us/f/96/heuristic.jpg/

代碼的某些部分:

Dim i,j As Integer 
    Dim temp As String 
    Dim x As Integer 
    Dim d As String 

    i = Application.CountA(Range("E:E")) + 10 
    'number of cell with values 
    j = Application.CountA(Range("J:J")) + 10 
    For j = 11 To j 
     temp = Range("J" & j).Value 
      For i = 11 To i 
      d = Range("D" & i).Value 
      * 
      Next 
    Next 

*這就存在一個問題,我無法弄清楚如何越過列D中的逗號",",並存儲數據。我想比較溫度與"d",但"d"上的值。我可以在同一個單元上有多個號碼,例如"3,2,1",以及是否有像temp = 3, then d= "0,2,1"這樣的匹配。

英語不是我的母語,所以我希望你能理解我想要的。

+1

你試過了什麼?如果您有任何問題,請展示您的現有代碼:如果不是,那麼也許可以先寫一些。請格式化您的示例數據以便使用 - 使用「代碼」按鈕。 – 2013-05-14 17:45:04

+0

如果你想讓我發送給我你的宏。 – Delpi10 2013-05-14 17:56:19

+1

@ Delpi10,請編輯你的文章並在那裏添加你的代碼,以便我們可以看看它。 – PowerUser 2013-05-14 18:11:07

回答

1

不需要VBA。標準Excel函數將工作:

  1. 創建一個新的列附近某處列D.
  2. 在您的新列,使用這個公式=IF(ISERROR(VLOOKUP(D11,J:J,1,FALSE)),D11,0)。此公式在列J中查找D11的值。如果找到匹配項,則返回0。否則,返回D11。
  3. 如果您願意,您可以隱藏D列以避免混淆。

如果您必須多次執行此操作,您可能希望擁有未格式化的「原始數據」選項卡和乾淨的「顯示選項卡」。這有幫助嗎?

+0

嗨,感謝您的幫助,但是我想要它更改匹配的數字,而不是返回0,因爲在D列中它可以有多個數字。問題是我不知道如何比較用逗號分隔的數字。例如,在D列中,我有「3,4,5」,在列「J」中有5,我想列D變成「3,4,0」。但是我想到了使用數組,但是我不知道列中的位置是什麼,也不知道數組的大小,因爲列D可能有多個數字。 – Delpi10 2013-05-16 16:26:52

+0

在這種情況下,我認爲你最大的問題是將多個不同的值存儲在一個單元中。這不是存儲數據的好習慣,並且會產生像您在此問的問題。我建議重建你的Excel表格,以便在每個單元格中只有1個值(可能使用'columns'作爲4列?) – PowerUser 2013-05-16 20:55:45