将公式添加到当前单元格值

时间:2015-10-30 17:17:36

标签: excel excel-vba vba

我有一个看似简单的问题,我无法找到答案,很可能是因为我的Excel词汇量有限......任何帮助都会非常感激!

我经常更新公司的目录,这涉及更新数千种产品的价格。我们为客户保留价格表的Excel版本,这些文件也需要保持最新。所有公司文件都包含简单的货币值,我希望能够使用包含百分比乘数的单元格更新它们。为了更好地说明我的需求,这里有一个例子:

   Col A   Col B
1 $5      105% (multiplier)
2 $10
3 $15

我正在寻找一种方法来快速均匀地将公式"=$B$1*"的一部分插入任何选定的单元格区域A1:A3(其中已包含值),以便其公式行将单独显示为"=$B$1*cell.value*"并生成更新的价格,而不是"=$B$1*cell.reference".

最终,我正在寻找一种方法,只需更改乘数单元格,现有价格的相关范围就会自动调整。但我想这样做而不删除或重新输入现有的价格列。如果有更明智的方法可以做到这一点,请告知。

PS **我知道我可以选择Paste并修改选定范围的单元格(乘以另一个单元格的值),但我觉得乘数场景会更快,因为大多数产品类别每次都会增加一定比例有一个变化。

2 个答案:

答案 0 :(得分:0)

类似的东西:

@Override
public void onResume() {
  super.onResume();

  // Register mMessageReceiver to receive messages.
  LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
      new IntentFilter("update-text"));
}

private boolean mCanBeUpdated = true;
private static final int ONE_SEC = 1000; //ms
private static final int RECEPTION_SPEED = 10; //ms
private static final int CYCLES = (int) (ONE_SEC / RECEPTION_SPEED);
private int mCurrentCycle = -1;
private String mMsgCache = "";

// handler for received Intents for the "update-text" event 
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent
        String message = intent.getStringExtra("message");
        Log.d("receiver", "Got message: " + message);

        mMsgCache = mMsgCache + "\t" + message;

        if (mCanBeUpdated) {
            // No problem updating UI here, refer --> http://stackoverflow.com/a/5676888/1008278
            final Handler handler = new Handler(context.getMainLooper());
            handler.post(new Runnable() {
                @Override
                public void run() {
                    MainActivity.recep.append(mMsgCache);
                    mMsgCache = "";
                }
            });

            mCanBeUpdated = false;
        } else if (mCurrentCycle >= CYCLES) {
            mCurrentCycle = -1;
            mCanBeUpdated = true;
        } else {
            mCurrentCycle++;
        }
    }
};

@Override
protected void onPause() {
  // Unregister since the activity is not visible
  LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
  super.onPause();
} 

此?

答案 1 :(得分:-1)

您可以使用查找和替换,它将在公式中查找。设置完成后,您可以全部更换。在此对话框中还有一个使用正则表达式的功能。