Is this an efficient way to use one event for multiple controls?
The problem is not in switching between senders but the fact that each branch calls a different method on inBank. I would suggest creating an enum for the denominations:

enum Denomination {
  Quarters,
  QuarterRolls,
  Nickels,
  NickelRolls,
  ...
}


and having a single setter in inBank:

void set(Denomination denomination, int value);


Then you can create a dictionary of controls to denominations:

IDictionary&lt;NumericUpDown, Denomination&gt; dict = new Dictionary&lt;NumericUpDown, Denomination&gt;();
dict[bkI_Ls_Quarters] = Denomination.Quarters;
dict[bkI_Rl_Quarters] = Denomination.QuarterRolls;
...


and your event handler would simply be:

private void BankInChanged(object sender, EventArgs e)
{
    var objSender = (NumericUpDown) sender;
    Denomination denomination = dict[objSender];

    currBoat.inBank.set(denomination, Convert.ToInt32(objSender.Value));
    currBoat.updateTotals();
    updateStatDisplay();
}