I used a match and index to accomplish what I believe you are trying to do.
  In the Excel spreadsheet, in the range A1 to D12 I put this data(top US cities for what it's worth):
  1
  
  New York
  
  New York
  
  8213839
  
  2
  
  Los Angeles
  
  California
  
  3794640
  
  3
  
  Chicago
  
  Illinois
  
  2824584
  
  4
  
  Houston
  
  Texas
  
  2076189
  
  5
  
  Philadelphia
  
  Pennsylvania
  
  1517628
  
  6
  
  Phoenix
  
  Arizona
  
  1476331
  
  7
  
  San Diego
  
  California
  
  1284347
  
  8
  
  San Antonio
  
  Texas
  
  1258733
  
  9
  
  Dallas
  
  Texas
  
  1246185
  
  10
  
  Detroit
  
  Michigan
  
  921147
  
  11
  
  San Jose
  
  California
  
  908870
  
  12
  
  Indianapolis
  
  Indiana
  
  789250
  
  In the range I8 to J10, I added this data:
  Indianapolis
  
  1
  
  Chicago
  
  2
  
  Dallas
  
  3
  
  The code that I wrote will find the first value in column J, which is the number 1.  It then search the table for "Indianapolis", and then replace the number 1 with the population of 789250.  Here is the code:
  
  Option Explicit
  Sub FindDataAndVLookup()
  Dim SearchCell As String, SearchCellValue As String, PopulatedCell As String, _
      PopulatedCellValue As String, LookupCell As String, LookupCellValue As String, _
      NewValue As String
  Dim CurrentRow As Integer
  Dim TableLookup As Range
  Set TableLookup = Sheets("Sheet1").Range("A1:D12")
  CurrentRow = 1
  SearchCellValue = ""
  Dim NewMatch
  Dim EndOfData As Boolean
  EndOfData = False
  Do Until EndOfData = True
      SearchCell = ("J" & LTrim(Str(CurrentRow)))
      SearchCellValue = Range(SearchCell).FormulaR1C1
      If Len(SearchCellValue) > 0 Then
          Do While Len(SearchCellValue) > 0
              SearchCell = ("J" & LTrim(Str(CurrentRow)))
              SearchCellValue = Range(SearchCell).FormulaR1C1
              If Len(SearchCellValue) > 0 Then
                  LookupCell = ("I" & LTrim(Str(CurrentRow)))
                  LookupCellValue = Application.WorksheetFunction.Clean(Range(LookupCell).FormulaR1C1)
                  NewMatch = Application.WorksheetFunction.Match(Sheets("Sheet1").Range(LookupCell), Sheets("Sheet1").Range("B1:B12"), 0)
                  NewValue = Application.WorksheetFunction.Index(Sheets("Sheet1").Range("D1:D12"), NewMatch)
                  Range(SearchCell).FormulaR1C1 = NewValue
                  CurrentRow = CurrentRow + 1
              Else
                  EndOfData = True
              End If
          Loop
      End If
  
  CurrentRow = CurrentRow + 1
  
  Loop
  
  End Sub
  
  From: ExcelVBA@yahoogroups.com [mailto:ExcelVBA@yahoogroups.com] On Behalf Of Manny
  Sent: Friday, March 01, 2013 3:30 PM
  To: ExcelVBA@yahoogroups.com
  Subject: [ExcelVBA] Find a cell then insert a vlookup
  
  Hello Wizards!
  I have a file that is sorted in such a way that the value in Column J will be null but only up to a point. What is the code I would use to ask VBA to find the first cell in column J that is not null? The first non-null cell should be the integer "1". Then I want to have VBA insert a vlookup function in the cell to the left of this cell. And finally I want the function to be auto-filled down the last row containing data.
  
  I look forward to your responses.
  
  Thank you,
  
  [Non-text portions of this message have been removed]
  
  
| Reply via web post | Reply to sender | Reply to group | Start a New Topic | Messages in this topic (2) | 
Be sure to check out TechTrax Ezine for many, free Excel VBA articles! Go here: http://www.mousetrax.com/techtrax to enter the ezine, then search the ARCHIVES for EXCEL VBA.
----------------------------------
Visit our ExcelVBA group home page for more info and support files:
http://groups.yahoo.com/group/ExcelVBA
----------------------------------
More free tutorials and resources available at:
http://www.mousetrax.com
----------------------------------
Tidak ada komentar:
Posting Komentar