Excel将一个单元格的值复制到另一个基于第三个单元格的值
问题描述:
我试图根据第三个单元格的值(D2:D30)
从范围(AG2:AG30)
中的一个单元格复制类似范围(AB2:AB30)
中的另一个单元格的值。Excel将一个单元格的值复制到另一个基于第三个单元格的值
- D列的值从下拉框中选择,而AB列的值是公式。
- 我不需要将公式复制到列AG的值中。 D列的值为
"Surgery"
,"OR"
,"ER"
,"PICU"
和"Other"
。
如果任何人可以帮助一个vba代码,可以做到这一点,我将不胜感激。谢谢!
答
我认为这是更多....正是你想要的:)
如果您有任何问题,请请评论。为了编码清晰和易于定制,我将其分开。
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
我的第一个想法是,你有一个标准的IF公式,或可能是一个CHOOSE公式而不是VBA的静态单元格。也许如果你可以添加一些关于D列标准的细节,它会变得更加清晰(有时当我在VBA中工作时,如果任务被隔离,我会自动将代码与任务复杂化,当它只是单元格中的公式时)。 – nfloria
我在列AG中使用嵌套IF公式。列D的标准只是从数据列表中选择。我想我要找的更好的描述是这样的。当我从列D中选择“手术”时,如果在列D中选择了“或”,则列AB中的值将复制到列AG,则列AB的值将复制到AH。移动一列在AI,AJ,AK列D的每个可能的值。 – pmgibs
嗯,这可能是我现在头脑中想的太多。如果是这样,我的道歉。如果没有我更好的理解,如果有阻止它的原因,我仍然会说你的选择将包括嵌套的IF(或者自定义下拉列表的CHOOSE公式)或基本的VBA代码来模仿它,例如SELECT CASE语句。 – nfloria