A requirement for this solution is that your shapefile and the other data file should have a unique identifier for merging. Meaning that the values of a column in your shapefile should match the values of a column in the second data file.
The relationship could be one-to-one: Each row in the shapefile has a unique value in the index column (column that we need to connect the data to the other file). And the other data should have an exact equivalent value in their rows that is too, unique in the column.
The relationship could be one-to-many: Values in the shapefile index column can be duplicated, but they should be uniquely specified in the other data.
If your datasets are following one of these criteria, then you can proceed. Otherwise, you may construct a many-to-many relationship that would increase the row count dramatically.
First, you need to load the other data. You still can import it even if it is a table without geometries.
After loading the data, right-click on your shapefile layer and choose properties. In the properties panel and then go to the join tab and click on the plus bottom:
After that a window will show up where you need to specify the join columns:
Choose the parameters accordingly:
Join layer is your other data file.
Join field is the index column in the data file table.
Target field is the index column name in your shapefile.
There are other options which you can play around, such as selecting few column, add prefix etc.
Hit OK and your data should appear in the attribute table of the shapefile.
Now you can use field calculator to fill your