Excel 使用单元格值定义要选择的列数
虽然我对Excel公式非常熟悉,但我对VBA还是完全陌生。我在一个临床管理岗位上工作,我将于明年初离职,我想让那些不懂IT的同事继续使用我的一些产品 我们面临的主要问题是,当我们从临床软件中提取数据时,默认情况下,它只会吐出门诊患者ID、姓名、地址、DOB等。如果我们要求软件输入任何附加细节,例如各种疾病的诊断日期,它会将这些数据放入患者左侧的新列中,这显然使我们不可能做一个vlookup。我使用的当前宏基本上选择导出数据的前3列或4列,然后将它们剪切/粘贴到电子表格的最右侧,然后将患者ID复制到单独的表格中,vlookup在其中执行操作并填充表格 我要寻找的是一种创建模板的方法,用户可以指定这些“额外”列的数量,可能使用下拉列表,这样就可以轻松地调整宏以适应新的数据集。我到处找了找,但还没找到合适的 以下是当前选择并移动数据的代码位:Excel 使用单元格值定义要选择的列数,excel,vba,Excel,Vba,虽然我对Excel公式非常熟悉,但我对VBA还是完全陌生。我在一个临床管理岗位上工作,我将于明年初离职,我想让那些不懂IT的同事继续使用我的一些产品 我们面临的主要问题是,当我们从临床软件中提取数据时,默认情况下,它只会吐出门诊患者ID、姓名、地址、DOB等。如果我们要求软件输入任何附加细节,例如各种疾病的诊断日期,它会将这些数据放入患者左侧的新列中,这显然使我们不可能做一个vlookup。我使用的当前宏基本上选择导出数据的前3列或4列,然后将它们剪切/粘贴到电子表格的最右侧,然后将患者ID复制
Sheets("Exported Data").Select
Columns("A:E").Select
Selection.Cut
ActiveWindow.ScrollColumn = 2
Columns("N:N").Select
Selection.Insert Shift:=xlToRight
ActiveWindow.ScrollColumn = 1
Columns("A:A").EntireColumn.AutoFit
Range("A2").Select
ActiveWorkbook.Worksheets("Exported Data").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Exported Data").Sort.SortFields.Add Key:=Range( _
"A2:A1285"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Exported Data").Sort
.SetRange Range("A1:M1285")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
您可以使用索引和匹配而不是VLOOKUP。使用“索引”和“匹配”可以将值拉回到查找列的左侧
ColA ColB Ref ColD ColE
12 111 aaa 3000 4001
13 122 bbb 3001 4002
14 133 ccc 3002 4003
=INDEX(A2:B4,MATCH(G1,C2:C4,0),2)
该公式在Ref列中查找“bbb”,并从ColB中提取“122”
您可以使用“匹配”确定行,使用“索引”确定要回退的列
这可能会为您省去所有剪切和粘贴的麻烦。谢谢您的帮助,这确实简化了事情!仍然需要弄清楚我将如何设置一个模板,该模板将自动创建具有此公式的列。我的角色分为IT和管理工作,所以我可能需要一段时间才能有机会对其进行适当的修补,但谢谢。