Board logo

標題: vba 搜尋儲存格後,貼上其他欄位 [打印本頁]

作者: snoopykay    時間: 2016-5-12 12:15     標題: vba 搜尋儲存格後,貼上其他欄位

各位版大版友好
  小弟這邊有個EXCEL 問題想請教較,如果我要在右邊輸入我想要的代碼(如右邊的KA800),
然後搜尋左邊A那欄,搜尋到之後,貼上跟隨其(B~I,BC 貼右邊第一列數字),請問這樣該如何寫這個VBA
感謝!!~

A                   B             C               D              E              F          G               H           I
KA100        0.2410         0.2150         0.2425         0.2200         0.2475         0.2200         0.2460         0.2150                                        
KA200        0.2460         0.2150         0.2475         0.2200         0.2525         0.2200         0.2510         0.2150                                 KA100       
KA300        0.2510         0.2150         0.2525         0.2200         0.2575         0.2200         0.2560         0.2150                                 0.2410         0.2150
KA400        0.2560         0.2150         0.2575         0.2200         0.2625         0.2200         0.2610         0.2150                                 0.2425         0.2200
KA500        0.2610         0.2150         0.2625         0.2200         0.2675         0.2200         0.2660         0.2150                                 0.2475         0.2200
KA600        0.2660         0.2150         0.2675         0.2200         0.2725         0.2200         0.2710         0.2150                                 0.2460         0.2150
KA700        0.2710         0.2150         0.2725         0.2200         0.2775         0.2200         0.2760         0.2150                                        
KA800        0.2760         0.2150         0.2775         0.2200         0.2825         0.2200         0.2810         0.2150
作者: luhpro    時間: 2016-5-12 22:25

回復 1# snoopykay
  1. Sub nn()
  2.   Dim iI%, iCol%
  3.   Dim lTop&
  4.   Dim sStr$
  5.   Dim rTar As Range
  6.   
  7.   Range([K2], [L8]).Clear
  8.   sStr = InputBox("請輸入要搜尋的資料", "尋找資料")
  9.   Set rTar = Range("A:A").Find(sStr, LookIn:=xlValues)
  10.   If Not rTar Is Nothing Then
  11.     With rTar
  12.       iCol = 11
  13.       lTop = 2
  14.       Cells(lTop, iCol) = .Value
  15.       For iI = 0 To 3
  16.         Range(.Offset(, iI * 2 + 1), .Offset(, iI * 2 + 2)).Copy Cells(lTop + iI + 1, iCol)
  17.       Next
  18.     End With
  19.   End If
  20. End Sub
複製代碼
[attach]24276[/attach]
作者: mave    時間: 2016-5-16 15:29

回復  snoopykay
luhpro 發表於 2016-5-12 22:25


請教luhpro 大大

iI% 還有 iCol% 後面的%符號是代表啥意思呢?

小弟才學粗淺,煩請指教
作者: luhpro    時間: 2016-5-16 20:17

回復 3# mave
請參考小幫手的說明:

Integer 資料型態

Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存。Integer 的型態宣告字元是百分比符號(%)
作者: ML089    時間: 2016-5-17 13:08

本帖最後由 ML089 於 2016-5-17 13:13 編輯

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xF As Range
    If Target.Address <> "$K$2" Then Exit Sub
    Set xF = [Sheet1!A:A].Find([K2].Value, lookat:=xlWhole)
    If xF Is Nothing Then MsgBox "找不到": Exit Sub
    For i = 1 To 4
         xF(1, i * 2).Resize(, 2).Copy [K2:L2].Offset(i, 0)
    Next
End Sub

再將 K2 設定為 A:A 的選單,可以簡化作業
作者: mave    時間: 2016-5-17 15:51

回復 4# luhpro

感謝大大的回覆

讓小弟增加見聞了

感恩
作者: c_c_lai    時間: 2016-5-17 19:58

本帖最後由 c_c_lai 於 2016-5-17 20:02 編輯

回復 1# snoopykay
  1. Sub Ex()
  2.     Dim sStr$, rest As Range
  3.     Dim lTar As Range, rTar As Range
  4.    
  5.     Range("K2:L10").Clear
  6.     sStr = InputBox("請輸入要搜尋的資料", "尋找資料")
  7.     Set lTar = Range("A:A").Find(sStr, LookIn:=xlValues)
  8.    
  9.     If Not lTar Is Nothing Then
  10.         '  Set rest = lTar.Resize(1, 9)
  11.         Set rTar = Cells(2, 11)
  12.         ' rTar.Resize(9, 1) = Application.Transpose(rest)   '  上下行同義
  13.         rTar.Resize(9, 1) = Application.Transpose(lTar.Resize(1, 9))
  14.     End If
  15. End Sub
複製代碼





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