2017-08-15 5 views
0

私の質問は次のとおりです。複数のvLookup式をVBA上の1つのセルに追加するにはどうすればよいですか?VBAで250以上の "部品"を持つvLookup-formulaを生成

私はこのように1 VLOOKUPを追加できることを知っている:

... = Application.WorksheetFunction.vLookUp("Search","Matrix","Index") 

私の問題がある:私は255ページを持つワークブックを持っているし、私の「和シート」で、私はそれらの255で検索する変数の式を必要とします私が必要とするデータのためのワークシート。 だから、Excelのマクロの出力は、(1つのセル内の全て)のようなものである必要があります:

=vLoookUp($A2;Sheet1!A1:A1000;2)+SVERWEIS($A2;Sheet2!A1:A1000;2)+ ...(255 times) 

はVBAでそのような何かをすることも可能ですか?

これは私が255枚に異なるオプションを分割するために使用するコードです:

これは私が株式のさまざまなバリエーション分割し、これまでに書いたコードされています(ITSはやや 作業が、私は親切ですその非常に効率的ではないことを確認、私は申し訳ありません

Sub Sheets() 
Application.ScreenUpdating = False 
ActiveWindow.WindowState = xlMinimized 

Dim Data As String 
Dim i As Long 
Dim k As Long 
Dim x As Long 
Dim y As String 


For i = 2 To 255 

Sheetname = Worksheets("Input").Cells(i, 1).Value 
Worksheets.Add.Name = Sheetname 
ActiveSheet.Move After:=Worksheets(ActiveWorkbook.Sheets.Count) 

x = 1 

For k = 2 To 876 
Data = Worksheets("Input").Cells(i, k).Value 
y = Cells(1, x).Address(RowAbsolute:=False, ColumnAbsolute:=False) 
BloomB = "=BDH(" & y & ",""TURNOVER"",""8/1/2011"",""4/30/2016"",""Dir=V"",""Dts=S"",""Sort=A"",""Quote=C"",""QtTyp=Y"",""Days=T"",""Per=cd"",""DtFmt=D"",""UseDPDF=Y"")" 
Worksheets(Sheetname).Cells(1, x) = Data 
Worksheets(Sheetname).Cells(2, x) = BloomB 
x = x + 2 
Next k 

Application.Wait (Now + TimeValue("0:00:05")) 
Next i 

ActiveWindow.WindowState = xlMaximized 
Application.ScreenUpdating = True 
End Sub 
+0

私は質問があいまいであることを知っています。しかし、VBAのスキルが限られているだけで、これ以上具体的に聞くことはできません。私は本当にそこにまだ誰かが私を助けることができる人がいることを願っています。 – Yarza

+0

シートをループしてループを調べるには、変数を使用して合計を格納し、後続の各ループをそのループに追加します。 –

+0

数式の最大長はExcel 2016で8192です。したがって、検索が長すぎる場合は、その制限に近づいている可能性があります。あなたは2つまたは3つのセルに分割する必要があります。 VBで計算したいのかどうかはわかりません(例のように)、またはExcel計算エンジンで計算されたVBを使用して数式を作成しますか? – NetMage

答えて

0

)すべてこのプログラミングのスタッフに新たなんだけど、これは非常に悪いデザインのように聞こえます。たぶんアクセスやSQL Serverは、この種のタスクに適しているかもしれません。また、VLOOKUP関数は最初の一致を返しますが、後続の一致は返さないことがわかります。ちょうどそれをあなたに気づかせたい。さて、これを試してみてください。

Function VLOOKAllSheets(Look_Value As Variant, Tble_Array As Range, _ 
          Col_num As Integer, Optional Range_look As Boolean) 
'''''''''''''''''''''''''''''''''''''''''''''''' 
'Written by OzGrid.com 
'Use VLOOKUP to Look across ALL Worksheets and stops _ 
at the first match found. 
''''''''''''''''''''''''''''''''''''''''''''''''' 

Dim wSheet As Worksheet 
Dim vFound 

On Error Resume Next 

    For Each wSheet In ActiveWorkbook.Worksheets 
     With wSheet 
     Set Tble_Array = .Range(Tble_Array.Address) 
      vFound = WorksheetFunction.VLookup _ 
      (Look_Value, Tble_Array, _ 
      Col_num, Range_look) 
     End With 
     If Not IsEmpty(vFound) Then Exit For 
    Next wSheet 

    Set Tble_Array = Nothing 
    VLOOKAllSheets = vFound 

End Function 

すべての完全な説明はここにあります。

http://www.ozgrid.com/VBA/VlookupAllSheets.htm

関連する問題