Excel将一个单元格的值复制到另一个基于第三个单元格的值

问题描述:

我试图根据第三个单元格的值(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

我认为这是更多....正是你想要的:)

如果您有任何问题,请请评论。为了编码清晰和易于定制,我将其分开。

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 

请尝试以下

=IF(C2=1,B2,A2) 

IF说,如果第一个参数是真的,你将显示第二个参数的值。否则它会复制第三个参数。

在我的例子中,如果C2等于1,那么函数将返回B2。否则A2。

+1

这确实奏效,但前提是所有值都已经在单元格中。我想我必须将公式变成工作表上的宏或宏按钮。这可以在所有数据输入后运行。谢谢! – pmgibs