Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 18
Default Compare City and State to Master List

Hello and thanks in advance!

In a single Excel sheet: I have a column (A) of city names and a column (B)
of state names (about 3100) generated from an internal company db. I need to
check for the "correct" spelling of these city and state names by comparing
each row in these columns to a master list of city and state names (about
29000) located in columns D and E, respectively, a list from a third party
resource.

SOOO, I believe I need a formula and/or logic to first see for each row if
the city and state in A and B match ANY city and state in columns D and E. If
so, no action should be taken or at most a Y indicator put in column C. If
not, then I would like the formula or logic to check the city and state name
from A and B to those found in D and E for the closest match and then suggest
that closest match in column C in that same row. It needs to take into
consideration two word city names (and spaces) and the state names need to
match.

Thanks!
  #2   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 3,355
Default Compare City and State to Master List

Take a look at the VLOOKUP function. You will need to concatenate your
city/state into one helper column on one of the sheets for this to work.
To concatenate use =A1 & A2



"Not Excelerated" wrote:

Hello and thanks in advance!

In a single Excel sheet: I have a column (A) of city names and a column (B)
of state names (about 3100) generated from an internal company db. I need to
check for the "correct" spelling of these city and state names by comparing
each row in these columns to a master list of city and state names (about
29000) located in columns D and E, respectively, a list from a third party
resource.

SOOO, I believe I need a formula and/or logic to first see for each row if
the city and state in A and B match ANY city and state in columns D and E. If
so, no action should be taken or at most a Y indicator put in column C. If
not, then I would like the formula or logic to check the city and state name
from A and B to those found in D and E for the closest match and then suggest
that closest match in column C in that same row. It needs to take into
consideration two word city names (and spaces) and the state names need to
match.

Thanks!

  #3   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 72
Default Compare City and State to Master List

Hi NE,

First, find the perfect matches:

1) In E2, and copy down for all rows of your companys data:
=A2&B2
2) In F2, and copy down for all rows of €ścorrect€ť data:
=C2&D2
3) In G2, and copy down for all rows of your companys data:
=IF(ISERROR(VLOOKUP(E2,$F:$F,1,FALSE))=TRUE,€śno match€ť,€ťmatch€ť))

Second, to find the closest matches:

1) Select G1, left click on Data/Filter/Autofilter
2) From the down arrow in G1, select €śno match€ť
3) Alt-F11
4) Insert / Module
5) Paste the code from €śOption Explicit€ť through €śEnd Function€ť below into
the code window:

Option Explicit
Type RankInfo
Offset As Integer
Percentage As Single
End Type
Function FuzzyVLookup(ByVal LookupValue As String, _
ByVal TableArray As Range, _
ByVal IndexNum As Integer, _
Optional NFPercent As Single = 0.05, _
Optional Rank As Integer = 1, _
Optional Algorithm As Integer = 3, _
Optional AdditionalCols As Integer = 0) As Variant
Dim R As Range
Dim strListString As String
Dim strWork As String
Dim sngMinPercent As Single
Dim sngWork As Single
Dim sngCurPercent As Single
Dim intBestMatchPtr As Integer
Dim intRankPtr As Integer
Dim intRankPtr1 As Integer
Dim I As Integer
Dim lEndRow As Long
Dim udRankData() As RankInfo
Dim vCurValue As Variant
LookupValue = LCase$(Application.Trim(LookupValue))
If IsMissing(NFPercent) Then
sngMinPercent = 0.05
Else
If (NFPercent <= 0) Or (NFPercent 1) Then
FuzzyVLookup = "*** 'NFPercent' must be a percentage zero ***"
Exit Function
End If
sngMinPercent = NFPercent
End If

If Rank < 1 Then
FuzzyVLookup = "*** 'Rank' must be an integer 0 ***"
Exit Function
End If

ReDim udRankData(1 To Rank)

lEndRow = TableArray.Rows.Count
If VarType(TableArray.Cells(lEndRow, 1).Value) = vbEmpty Then
lEndRow = TableArray.Cells(lEndRow, 1).End(xlUp).Row
End If

For Each R In Range(TableArray.Cells(1, 1), TableArray.Cells(lEndRow, 1))
vCurValue = ""
For I = 0 To AdditionalCols
vCurValue = vCurValue & R.Offset(0, I).Text
Next I
If VarType(vCurValue) = vbString Then
strListString = LCase$(Application.Trim(vCurValue))
sngCurPercent = FuzzyPercent(String1:=LookupValue, _
String2:=strListString, _
Algorithm:=Algorithm, _
Normalised:=True)

If sngCurPercent = sngMinPercent Then
'---------------------------
'-- Store in ranked array --
'---------------------------
For intRankPtr = 1 To Rank
If sngCurPercent udRankData(intRankPtr).Percentage Then
For intRankPtr1 = Rank To intRankPtr + 1 Step -1
With udRankData(intRankPtr1)
.Offset = udRankData(intRankPtr1 - 1).Offset
.Percentage = udRankData(intRankPtr1 -
1).Percentage
End With
Next intRankPtr1
With udRankData(intRankPtr)
.Offset = R.Row
.Percentage = sngCurPercent
End With
Exit For
End If
Next intRankPtr
End If

End If
Next R

If udRankData(Rank).Percentage < sngMinPercent Then
FuzzyVLookup = CVErr(xlErrNA)
Else
intBestMatchPtr = udRankData(Rank).Offset - TableArray.Cells(1, 1).Row +
1
If IndexNum 0 Then
FuzzyVLookup = TableArray.Cells(intBestMatchPtr, IndexNum)
Else
FuzzyVLookup = intBestMatchPtr
End If
End If
End Function



6) In H1: 1
7) In I1: 2
8) In J1: 3
9) Into the first cell in column H below row 1 (still filtered on column G).
Use the current row number to replace the # symbol in the formula below:
=fuzzyvlookup($E#,$F:$F,1,,,H$1)

10) While still filtered on column G: copy the formula into columns I and J;
for all rows of your companys data in columns H, I, and J where the city and
state are €śno match€ť

Notes:

The custom function cannot have empty cells in the middle of the lookup
data, an empty cell is the test that will stop the search process.

Fuzzy matching algorithms are very CPU hungry, so try to use them sparingly.

Let me know if this helps.

Thanks,
Peggy


"Not Excelerated" wrote:

Hello and thanks in advance!

In a single Excel sheet: I have a column (A) of city names and a column (B)
of state names (about 3100) generated from an internal company db. I need to
check for the "correct" spelling of these city and state names by comparing
each row in these columns to a master list of city and state names (about
29000) located in columns D and E, respectively, a list from a third party
resource.

SOOO, I believe I need a formula and/or logic to first see for each row if
the city and state in A and B match ANY city and state in columns D and E. If
so, no action should be taken or at most a Y indicator put in column C. If
not, then I would like the formula or logic to check the city and state name
from A and B to those found in D and E for the closest match and then suggest
that closest match in column C in that same row. It needs to take into
consideration two word city names (and spaces) and the state names need to
match.

Thanks!

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
zip code to city, state function xcelentform Excel Worksheet Functions 1 May 18th 06 11:59 PM
auto fill state and city from phone number? Biz Excel Discussion (Misc queries) 2 November 18th 05 06:52 PM
city, state, zip in same cell whs2002 Excel Discussion (Misc queries) 2 April 29th 05 07:02 AM
I have a master list can I get office to orangnize by city for me. David Excel Worksheet Functions 2 April 11th 05 11:25 PM
Splitting City State Zip Pete Provencher Excel Worksheet Functions 2 February 7th 05 09:33 PM


All times are GMT +1. The time now is 10:14 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"