返回列表 上一主題 發帖

不好意思 新手又來請教 資料比對問題 麻煩各位了

getopenfilename會得到?
workbooks.open括號中是否與你getopenfilename得到的相同?
了解各個指令的參數資料型態,應是你目前最需要清楚的觀念
請利用F8的逐行功能來檢查變數的變化
學海無涯_不恥下問

TOP

回復 13# ffntldj
抱歉沒說清楚  應是以下這段 改成選擇檔案
With Workbooks.Open '("D:\工程師送件範例.xls") '檔案路徑自行修改

TOP

了解 謝謝你 目前已用這個架構去建立我想要的功能

另外跟你請問一個問題 如果我想要把輸入改成可以選擇檔案

是不是用application.getopenfilename

試了一下 在 With .Sheets("b") 會有問題

感激不盡

TOP

回復 10# ffntldj

抱歉!這是我的習慣不好
    mystr未宣告,你可自己加進去
把mystr為字串
未宣告的變數,EXCEL會認為是Variant
會自己判斷應該屬於哪一種變數存在
你可由程式碼逐行中看出mystr的變化
就知道他是甚麼型態的變數了
學海無涯_不恥下問

TOP

to 超級版主 下面的那個功能我寫出來了!! 感謝 那個mystr不用定義那個問題在麻煩你教我一下 謝謝

TOP

謝謝版主你熱心的回覆 真的很感謝

有問題想請教 上面這各code的mystr 不用定義嘛?? 不用用到Dictionary了?這樣寫是定義mystr是矩陣的意思嘛?

我應該是不分part id 把ope_no寫進去儲存格裡沒錯
但是part_id 是要分儲存格的 如下面 y z 這樣
part_id                   y                      z            
                       ('356','456','556')      

我會好好努力的 謝謝

TOP

本帖最後由 Hsieh 於 2011-7-20 20:58 編輯

回復 8# ffntldj
問題1
IF陳述式的語法兩種
1.   
If 判斷式 then 執行陳述式
2.   
If 判斷式 then
          執行TRUE陳述式
       Else
          執行False陳述式
End If
問題2
這樣你就不分part_id
只是把所有modify的號碼全寫入同一個儲存格嗎?
  1. Sub nn()
  2. With Workbooks.Open("D:\book2.xls") '檔案路徑自行修改
  3. With .Sheets("b")
  4. For Each a In .Range(.[A1], .[A65536].End(xlUp))
  5.   If a = "modify" Then
  6.      If mystr = "" Then
  7.         mystr = "'" & Right(a.Offset(, 1), 3) & "'"
  8.         Else
  9.         mystr = mystr & ",'" & Right(a.Offset(, 1), 3) & "'"
  10.      End If
  11.   End If
  12. Next
  13. End With
  14. .Close
  15. End With
  16. With Sheets("a")
  17.    .Cells(3, 2) = "(" & mystr & ")"
  18. End With
  19. End Sub
複製代碼
學海無涯_不恥下問

TOP

謝謝兩位版主, code我已經看完了也看懂了,也自己試著做了一些修改 非常感謝
有兩個問題想請教
第一個問題就是 以下這段code為什麼沒有對應的end if? 是不需要嗎?
If a = "part_id" Then mystr = a.Offset(, 1).Text
第二個問題是
這個code主要是把part_id 可以跟 ope_no去做對應 ,如下表示
part_id                   y                   z
                   ('356','456')        ('556')
如果我想改成
part_id                   y                              z
                   ('356','456','556')      
應該是修改以下這一段code,試了一下午,可否再教我一下 感激不盡
If d(mystr) = "" Then
     d(mystr) = "'" & Right(a.Offset(, 1), 3) & "'"
      Else
      d(mystr) = d(mystr) & ",'" & Right(a.Offset(, 1), 3) & "'"
     End If

TOP

@超級版主   謝謝你 我在研究一下你的寫法  
@版主    抱歉 我在描述清楚一點 謝謝

TOP

回復 4# ffntldj


    就單純把book2的b工作表中part_id對應modify後3碼填入a工作表的第2、3列
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Workbooks.Open("D:\book2.xls") '檔案路徑自行修改
  4. With .Sheets("b")
  5. For Each a In .Range(.[A1], .[A65536].End(xlUp))
  6.   If a = "part_id" Then mystr = a.Offset(, 1).Text
  7.   If a = "modify" Then
  8.      If d(mystr) = "" Then
  9.         d(mystr) = "'" & Right(a.Offset(, 1), 3) & "'"
  10.         Else
  11.         d(mystr) = d(mystr) & ",'" & Right(a.Offset(, 1), 3) & "'"
  12.      End If
  13.   End If
  14. Next
  15. End With
  16. .Close
  17. End With
  18. With Sheets("a")
  19. k = 2
  20. For Each ky In d.keys
  21.    .Cells(2, k) = ky
  22.    .Cells(3, k) = "(" & d(ky) & ")"
  23. k = k + 1
  24. Next
  25. End With
  26. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 口說好話、心想好意、身行好事。
返回列表 上一主題