【问题标题】:VBa vlookup , replace range as variableVBa vlookup,将范围替换为变量
【发布时间】:2018-08-03 10:20:41
【问题描述】:

好的,我将重新提出问题。

我有一个工作表,其中有一个名为“My INT”的选项卡。 此选项卡包含一个数据表和一个按钮,该按钮带有一个名为“importRMR”的已分配宏。代码如下:

Sub importRMR()
Dim rng As Range

Set rng = ActiveSheet.Range("G3")
Sheets.Add(After:=ActiveSheet).Name = "RMR " & Format(Date, "DD-MM-YY")
ActiveSheet.Buttons.Add(966.75, 27.75, 153.75, 125.25).Select
Selection.OnAction = "Cimp"

Selection.Characters.Text = "Importuj"
With Selection.Characters(Start:=1, Length:=13).Font
    .Name = "Tahoma"
    .FontStyle = "Standaard"
    .Size = 16
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    End With
End Sub

这将创建一个具有特定名称的选项卡 :RMR " & Format(Date, "DD-MM-YY")

现在我手动将表格(始终相同)粘贴到新创建的选项卡“RMR 03/08/2018”。下一步是单击此选项卡中的按钮( Importuj ),我的目标是: 1. Vlookup data in tab "my INT" where range(lookup array) is tab "RMR" 然后删除rmr tab。

诸如修剪数据粘贴值之类的程序我可以做,只是vlookup但是是个问题。

我当前的“importuj”按钮代码是: ub 测试()

Dim DOTR As String

Dim shT As String
Set shT = Sheets(DOTR).Range("E2:H584")




'shT = Sheets(DOTR).Range("c1:e2").Select






DOTR = "RMR " & Format(Date, "DD-MM-YY")
'Sheets(DOTR).Range ("E2:H584").selc


Worksheets("My INT").Range("N3").Formula = "=vlookup(c3,sht,3,0)"


End Sub

很遗憾,我收到一个错误 - “编译错误” - 需要对象。

【问题讨论】:

  • 代码在哪里?
  • 哈哈对不起,现在添加代码:)
  • 所以我想做的是:1

标签: excel vba formula vlookup


【解决方案1】:

目标是将几个不同的字符串组合成一个有凝聚力的字符串:

=VLOOKUP(C3,'ABCDEF 03-08-18'!$B$4:$D$10,3,0)

这将被放置在一个单元格中,使用:

Worksheet.Range.Formula

工作表名称“ABCDEF”是任意的,我们动态创建日期。我们在 Excel 中使用命名范围“myNamedRange”并引用地址属性以实现灵活性,而无需编辑代码。

Dim strSheetName As String
Dim strNamedRange As String
Dim strDateSegment As String
Dim strPrefix As String
Dim shT As String

strSheetName = "My INT"
strNamedRange = "myNamedRange"
strDateSegment = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Right(Year(Date), 2) & "'!"
strPrefix = "'" & "ABCDEF"

shT = "=VLOOKUP(C3," & strPrefix & strDateSegment & Worksheets(strSheetName).Range(strNamedRange).Address & ",3,0)"

Worksheets("My INT").Range("N3").Formula = shT

【讨论】:

  • 数字 sht 是一个字符串... set 与它无关
  • 我希望 sht 是新创建的选项卡 DOTR = "RMR" & Format(Date, "DD-MM-YY") 中的范围
  • ahhhh.... 最后,您添加了一些细节。以我很快成为不存在的代表为代价。看看。
  • 好吧,我基本上是想在一个范围内放置一个公式,它不一定是单元格,我只是想如果我把它放在一个单元格中,我可以很容易地修改它并编写代码使用此公式填充该列的其余部分,直到表格末尾,然后复制粘贴为值。单元格(sht)的conet是产品名称(1列)和相邻列中的不同数值。
  • 好的。我们会去的。从即时错误开始,从 Set shT = Sheets(DOTR).Range("E2:H584") 中删除集合,当你在它的时候,考虑到你的 vlookup 引号中有一个 vba 变量,这是一个 nogo ,不能那样做。它必须被包裹在一个更大的字符串中。像 str = "=vlookup(c3," & sht & ",3,0)" 然后你的 worksheet.range.formula=str
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多