Once problem with approximate matches your data might run into is that the column being looked up needs to be sorted. While your data is actually sorted, you are only showing data from rows 786 to 792 and I don't think that
all of your data is sorted.
The best way to do this may be a 'helper' column that splits off a keyword that can be used as an exact match. Your
Drug Lookup worksheets would look like this.

The formula in D786 is,
=TRIM(LEFT(B786,IFERROR(FIND(CHAR(32),B786),99)))
But you will probably want to start at at D6 and fill down.
The Phar**macy worksheet could reference that column to return the Drug Class from column C.

The formula in G3 is,
=INDEX('Drug Lookup'!$C$6:$C$999, MATCH(TRIM(LEFT(F3, IFERROR(FIND(CHAR(32), F3),99))),'Drug Lookup'!$D$6:$D$999,0))
Addendum: your data looks like it is in a table so the formula might be closer to this,
=INDEX(Table1[[#All],[Drug Class]], MATCH(TRIM(LEFT(F3, IFERROR(FIND(CHAR(32), F3),99))),Table1[[#All],[Helper]],0))
Splitting off a word and relying upon it as the key to a lookup is not always successful but with a little massaging of the data and keyword column (and setting some rules for input) you should be successful.
p.s. how's my typing?