Board logo

標題: [發問] 請問有關對照帶入,找尋很久不知道怎麼做,感恩 [打印本頁]

作者: doulioufire    時間: 2015-9-7 23:45     標題: 請問有關對照帶入,找尋很久不知道怎麼做,感恩

如圖一所表示,對照日期,將名稱填入表單,
如圖二所表示,對照日期,將名稱填入表單,但是不可以必須保留01日的資料

不知道這樣表達,清楚嗎?感謝各位!

VBA或函數都可以的,再次感謝!
作者: Scott090    時間: 2015-9-8 08:22

回復 1# doulioufire


這個是否符合需求?
  1. Option Base 1
  2. Sub Test()
  3.     Dim aa, bb
  4.     Dim i&, j%
  5.     aa = Range("A2:B" & [b2].End(xlDown).Row).Value
  6.     ReDim bb(1, UBound(aa))
  7.     For i = 1 To UBound(aa)
  8.        If aa(i, 1) <> "" Then
  9.            j = j + 1                             '計算有幾個代號
  10.            bb(1, aa(i, 1)) = aa(i, 2)  '依代號排序
  11.        End If
  12.     Next
  13.     Cells(Cells(3, "U") + 1, "D").Resize(, j) = bb   '放在日的對應列
  14. End Sub
複製代碼

作者: 准提部林    時間: 2015-9-8 10:42

公式搭VBA:
Sub TEST()
With [D1:S1].Offset([U3], 0)
  .Formula = "=IF(ISNA(MATCH(D$1,$A:$A,)),"""",VLOOKUP(D$1,$A:$B,2,))"
  .Value = .Value
End With
End Sub

要保留前值,僅用公式時,必須手動貼成〔值〕,使用VBA可一氣呵成!
 
作者: 准提部林    時間: 2015-9-8 10:53

完整些,避免操作錯誤將之前的資料覆蓋了:
 
Sub TEST()
If Val([U3]) <= 0 Then Exit Sub
With [D1:S1].Offset([U3], 0)
   If Application.CountA(.Cells) > 0 Then
     If MsgBox("指定日期已有資料,是否更新數據? ", 0 + 4 + 256) = vbNo Then Exit Sub
   End If
   .Formula = "=IF(ISNA(MATCH(D$1,$A:$A,)),"""",VLOOKUP(D$1,$A:$B,2,))"
   .Value = .Value
End With
End Sub
作者: doulioufire    時間: 2015-9-8 12:50

感謝 感謝 准提部林 Scott090  我再來試驗看看




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