Board logo

標題: 一個VLOOKUP函數問題 [打印本頁]

作者: 317    時間: 2012-4-22 22:09     標題: 一個VLOOKUP函數問題

大大們, 安好
有一VLOOKUP問題請教,現把附件上傳, 請大大們教導, 謝謝!!
[attach]10586[/attach]
作者: register313    時間: 2012-4-22 22:26

回復 1# 317

先用函數來完成,參考

1.選C4~C13
  輸入=TRANSPOSE(OFFSET(Sheet1!B3:K3,MATCH(C3,Sheet1!A3:A18,0)-1,0))
   Ctrl+Shift+Enter 完成輸入
2.C14=VLOOKUP(C3,Sheet1!A3:M18,12,0)&VLOOKUP(C3,Sheet1!A3:M18,13,0)

[attach]10587[/attach]
作者: 317    時間: 2012-4-22 22:38

回復 2# register313
謝謝大大回應, 其實我現時之檔案也是函數完成, 函數雖不是同一但功效與大大的一樣, 但真心感謝大大,
因檔案有時給予其他同事使用, 往往做成, 工作表函數損壞, 而同事亦不明白原理, 故希望能用程式取代, 因程式是在程式區, 是不會受到損壞,故請大大們協助, 謝謝!!
作者: Hsieh    時間: 2012-4-22 22:45

回復 3# 317
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim A As Range
  3. If Target.Address <> "$C$3" Then Exit Sub
  4. Set A = Sheet1.Columns("A:A").Find(Target, lookat:=xlWhole)
  5. If A Is Nothing Then Exit Sub
  6. [C4].Resize(10, 1) = A.Offset(, 1).Resize(, 10).Value
  7. [C14] = A.Offset(, 11) & A.Offset(, 12)
  8. End Sub
複製代碼

作者: 317    時間: 2012-4-23 06:15

回復 4# Hsieh
謝謝版主大大, 衷心感謝, 祝快樂..
作者: 周大偉    時間: 2012-4-24 01:52

Hsieh 版主大大,好
小弟有問題請教, 現把問題寫於檔案工作表3, 請大大教導, 感恩
[attach]10621[/attach]
作者: 周大偉    時間: 2012-4-24 18:45

本帖最後由 周大偉 於 2012-4-24 18:54 編輯

[attach]10637[/attach]回復 2# register313
大大, 好
小弟試用大大函數, 這條函數均用上陣列
=TRANSPOSE(OFFSET(Sheet1!B3:K3,MATCH(C3,Sheet1!A3:A18,0)-1,0))
=VLOOKUP(C3,Sheet1!A3:M18,12,0)&VLOOKUP(C3,Sheet1!A3:M18,13,0)
b3:k3是傳回欄位b至k, a3:a18是範圍, 按若改變範圍, a1:1000, 對話盒彈出提示, 不能改變陣列一部份, 請教大大, 若把範圍若大是如何修改
謝謝謝!
[attach]10637[/attach]
作者: register313    時間: 2012-4-24 19:13

回復 7# 周大偉

請詳看2#之操作步驟
[attach]10638[/attach]
作者: register313    時間: 2012-4-24 19:20

回復 6# 周大偉
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim A As Range
  3. If Target.Address <> "$C$3" Then Exit Sub
  4.   Set A = Sheet1.Columns("A:A").Find(Target, lookat:=xlWhole)
  5. If A Is Nothing Then Exit Sub
  6.   [C4].Resize(10, 1) = Application.Transpose(A.Offset(, 1).Resize(, 10).Value)
  7.   [C14] = A.Offset(, 11) & A.Offset(, 12)
  8. End Sub
複製代碼
[attach]10639[/attach]
作者: 周大偉    時間: 2012-4-24 22:35

回復 9# register313
謝過大大回應,  衷心感謝謝!!,
作者: 周大偉    時間: 2012-4-25 21:52

大大好
問題在樓上已問過, 現把資料再整理上傳發問, 希望能明白原因, 謝謝!!
[attach]10672[/attach]
[attach]10673[/attach]
作者: Hsieh    時間: 2012-4-25 22:29

回復 11# 周大偉
程式碼有誤,應更正如下
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim A As Range
  3. If Target.Address <> "$C$3" Then Exit Sub
  4. Set A = Sheet1.Columns("A:A").Find(Target, lookat:=xlWhole)
  5. If A Is Nothing Then Exit Sub
  6. [C4].Resize(10, 1) = Application.Transpose(A.Offset(, 1).Resize(, 10).Value)
  7. [C14] = A.Offset(, 11) & A.Offset(, 12)
  8. End Sub
複製代碼

作者: register313    時間: 2012-4-25 22:59

本帖最後由 register313 於 2012-4-25 23:28 編輯

回復 11# 周大偉
  1. Private Sub ComboBox1_Change()
  2.   範圍 = Sheets("人民").Cells(3, 1).End(xlDown).Row
  3.   ComboBox1.ListFillRange = "人民!$a$3:$b$" & 範圍
  4.   [C3] = ComboBox1
  5. End Sub

  6. Private Sub Worksheet_Change(ByVal Target As Range)
  7. Dim A As Range
  8. If Target.Address <> "$C$3" Then Exit Sub
  9.    Set A = Sheet1.Columns("A:A").Find(Target, lookat:=xlWhole)
  10. If A Is Nothing Then Exit Sub
  11.   [C4].Resize(10, 1) = Application.Transpose(A.Offset(, 1).Resize(, 10).Value)
  12.   [C14] = A.Offset(, 11) & A.Offset(, 12)
  13. End Sub
複製代碼
[attach]10675[/attach]
作者: 周大偉    時間: 2012-4-25 23:35

謝謝register313 大大, 及Hsieh 大大,
衷心感謝,
作者: 317    時間: 2012-4-29 09:05

本帖最後由 317 於 2012-4-29 09:06 編輯

大大們, 早晨
在這網站中的確提升了不少知識, 而這篇文章的發問, 小妹也吸收了知識, 但小妹有一問題解不開, 請大大協助解答, 現附上檔案, 內有說明,先行謝過各版主及各大大, 謝謝!!
[attach]10736[/attach]
作者: Hsieh    時間: 2012-4-29 09:55

回復 15# 317
match函數,搜尋值得資料型態必須相符
因為下拉選單所連結的儲存格C3
當選擇為數字資料時,被視為文字,故而產生錯誤
你這個問題比較不好解決,是因為你的資料有文字與數字混合
建議你把人民工作表A欄資料利用資料剖析轉成文字格式
這樣就容易處理了
作者: 317    時間: 2012-4-29 11:33

回復 16# Hsieh
謝謝Hsieh版主大大,
其實小妹也曾想過是數字與文字間的格式, 小妹做法是在儲存格格式中把a欄轉為文字, 但不成功,
大大教導用資料分析倒是沒試過, 但如大大所料, 當分析轉為文字, 問題便解決, 謝過大大教導, 感恩!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)