2016-02-27 223 views
1

我試圖根據第三個單元格的值(D2:D30)從範圍(AG2:AG30)中的一個單元格複製類似範圍(AB2:AB30)中的另一個單元格的值。Excel將一個單元格的值複製到另一個基於第三個單元格的值

  • D列的值從下拉框中選擇,而AB列的值是公式。
  • 我不需要將公式複製到列AG的值中。 D列的值爲"Surgery","OR","ER","PICU""Other"

如果任何人可以幫助一個vba代碼,可以做到這一點,我將不勝感激。謝謝!

+1

我的第一個想法是,你有一個標準的IF公式,或可能是一個CHOOSE公式而不是VBA的靜態單元格。也許如果你可以添加一些關於D列標準的細節,它會變得更加清晰(有時當我在VBA中工作時,如果任務被隔離,我會自動將代碼與任務複雜化,當它只是單元格中的公式時)。 – nfloria

+0

我在列AG中使用嵌套IF公式。列D的標準只是從數據列表中選擇。我想我要找的更好的描述是這樣的。當我從列D中選擇「手術」時,如果在列D中選擇了「或」,則列AB中的值將複製到列AG,則列AB的值將複製到AH。移動一列在AI,AJ,AK列D的每個可能的值。 – pmgibs

+0

嗯,這可能是我現在頭腦中想的太多。如果是這樣,我的道歉。如果沒有我更好的理解,如果有阻止它的原因,我仍然會說你的選擇將包括嵌套的IF(或者自定義下拉列表的CHOOSE公式)或基本的VBA代碼來模仿它,例如SELECT CASE語句。 – nfloria

回答

0

我認爲這是更多....正是你想要的:)

如果您有任何問題,請請評論。爲了編碼清晰和易於定製,我將其分開。

Option Explicit 

'module-scope variables 
Dim range1 As Range 
Dim range2 As Range 
Dim range3 As Range 
Dim i As Long 
Dim string1 As String 

Dim address1 As String 
Dim address2 As String 


Sub derp() 

'set your sheet here or just let it work on active sheet 

Set range1 = Range("AG2:AG30") 
Set range2 = Range("AB2:AB30") 
Set range3 = Range("D2:D30") 

For i = 0 To range3.Rows.Count 

    string1 = range3(i).Value 
    address1 = range1(i).Address 
    address2 = range2(i).Address 

    Select Case string1 

     Case string1 = "Surgery" 
      'do stuff here 
      Call Valueswap(address1, address2) 

     Case string1 = "OR" 


     Case string1 = "ER" 

     Case string1 = "PICU" 

     Case string1 = "Other" 

     Case Else 
      'value in column D yields error, put a message here 

    End Select 

Next 







End Sub 

Function Valueswap(address1 As String, address2 As String) 
    'puts second address value into the first address 
    Range(address2).Value = Range(address1).Value 

End Function 
0

請嘗試以下

=IF(C2=1,B2,A2) 

IF說,如果第一個參數是真的,你將顯示第二個參數的值。否則它會複製第三個參數。

在我的例子中,如果C2等於1,那麼函數將返回B2。否則A2。

+1

這確實奏效,但前提是所有值都已經在單元格中。我想我必須將公式變成工作表上的宏或宏按鈕。這可以在所有數據輸入後運行。謝謝! – pmgibs

相關問題