Building on the previous answer, here's a full explanation that may serve others who land on this question.
ArcGIS has a few types of fields (or ways in which it stores information in a column of data): short interger, long interger, float, double, text/string, date. Those types are assigned to a field (column) and may not reflect the contents of a field (i.e. you may have numbers in your field but it is stored as text or you may have intergers stored as float). When joining columns from Excel that are saved as field type .txt (and perhaps others that I haven't checked yet), ArcGIS decides what type of field it is based on the contents of the column (if there are numbers then it will decide that it is interger).
The technical explation above means that you may have a column full of numbers in your ArcGIS field (but that is stored as a text type) and numbers in your table (that you want to join) but ArcGIS won't recognize them as the same type and will not allow you to make a join based on them. In order to make the join, you need to find a way to change the type of column so that they are both recognized as the same (changing the input table type more malleable).
If you have a field saved as text/string in ArcGIS (with numbers) that you want to join to a column of numbers in a table, you can set the type of the column in in your text/csv file by making a few tweaks. In Excel (or other spreadsheet software), create at least eight rows of "fake data" with text (e.g. a, b, c, d, etc) in the table you want to join. Save this new .csv/.text and use it for your join. Then ArcGIS will recognize your column as "text"/"string" and able to join.