【问题标题】:VBA code to create formula depending on cell valueVBA代码根据单元格值创建公式
【发布时间】:2013-04-12 16:01:11
【问题描述】:

我有一个电子表格,其中包含单元格 A 到 G 中的值。

我需要读取单元格 F 中的数据,并根据数据,在 H 列中的相应单元格中形成一个超链接,并将来自单元格 G(F 旁边)的数据插入到超链接中。

EG 1

单元格 F 包含:DPD

单元格 g 包含:123456

希望单元格 H 创建超链接:

=HYPERLINK("http://www.dpd.co.uk/tracking/quicktrack.do?search.consignmentNumber="&CELLG*&"&search.searchType=16&search.javascriptValidated=0&appmode=guest")

EG 2

单元格 F 包含:TNT

单元格 g 包含:abcde

希望单元格 H 创建超链接:

=HYPERLINK("http://www.tnt.com/express/en_gb/site/searchresults.html?q=CELLG")

我在单元格 F 中有更多其他值依赖于不同的超链接公式,但我应该能够重复和更改代码以适应这些值。

更新:

这是我目前应用公式的尝试。

  Range("I1").Select
ActiveCell.FormulaR1C1 = _
    "=IF(RC[-2]=""dpd"",HYPERLINK(""http://www.dpd.co.uk/tracking/quicktrack.do?search.consignmentNumber=""&RC[-1]&""&search.searchType=16&search.javascriptValidated=0&appmode=guest""))"
Range("I1").Select
Selection.AutoFill Destination:=Range("i1:i" & Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillCopy
 Range("I2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Range("A1:I1").Select
ActiveSheet.Range("A1:i1").AutoFilter Field:=9, Criteria1:="FALSE"
   Range("I2").Select
ActiveCell.FormulaR1C1 = _
    "=IF(R[-1]C[-2]=""City Link"",HYPERLINK(""http://www.packagetrackr.com/track/citylink/""&R[-1]C[-1]&""""))"
  Range("I2").Select
Selection.AutoFill Destination:=Range("i2:i" & Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillCopy

Range("A1:I1").Select
ActiveSheet.Range("A1:i1").AutoFilter Field:=9, Criteria1:="FALSE"
Range("i2").Select
ActiveCell.FormulaR1C1 = _
    "=IF(R[-1]C[-2]=""hermes"",HYPERLINK(""http://www.hermes-europe.co.uk/tracker.html?trackingNumber=""&R[-1]C[-1]&""&Postcode=""&R[-1]C[-4]&R[-1]C[-3]&""""))"
  Range("I2").Select
Selection.AutoFill Destination:=Range("i2:i" & Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillCopy

If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False
Range("I2").Select
Selection.Delete Shift:=xlUp
Range("I1").Select

我不知道如何在过滤后的列表上自动填充。

也许我需要尝试循环方法?

失败的公式:

=IF(G2="hermes",HYPERLINK("www.hermes-europe.co.uk/tracker.html?trackingNumber="&H2&"&Postcode="&e2&f2&"),IF(G2="Parcelforce",HYPERLINK ("www.parcelforce.com/track-trace?trackNumber="&h2&"),IF(G2="皇家邮政",HYPERLINK("www.royalmail.com/track-trace?track=track&trackNumber="&h2&"&gear= track&imageRootPath=&loc=en_GB&default=default&emt=emt"),IF(G2="Yodel",HYPERLINK("www.myyodel.co.uk/tracking?parcel_id="&h2&"&postcode="&e2&"%23"&f2&"), IF(G2="4 Square",HYPERLINK("login.smartconsign.co.uk/trackingcust.aspx?partnerid=EAFSQ001&jobno="&h2&"),IF(G2="德国邮政",HYPERLINK("nolp.dhl.de /nextt-online-public/set_identcodes.do?lang=en&idc="&h2&"&rfn=&extendedSearch=true"),IF(g2="No Tracking","&h2&")""")))))

【问题讨论】:

  • Col F 在创建这些超链接中扮演什么角色?我可以看到公式中使用了 Col G...
  • 那么 col F 将决定将哪个公式输入到 Col H 中。例如,如果单元格 f 包含“TNT”,那么要输入到单元格 h 中的所需公式将是 =HYPERLINK("@ 987654323@G)
  • 它是如何规定的呢?你在哪里提到过?
  • 我的意思是单元格 F 中应该发生的事情有 DPDTNTSomething 否则?
  • 抱歉我的帖子不清楚

标签: vba excel hyperlink cell


【解决方案1】:

您必须使用相关单元格的地址而不是CELLG。请参阅此示例。

这进入单元格H1

要在 Excel 公式中进行比较,您可以使用 IF 公式

例子

=If(Condition,Do if Cond is true, Do if Cond is False)

所以

=IF(F2="TNT",Do Something if equal to TNT,Do Something if not equal to TNT))

=IF(F2="DPD",Do Something if equal to DPD,Do Something if not equal to DPD))

结合以上两个将给出

=IF(F2="TNT",Do Something if equal to TNT,IF(F2="DPD",Do Something if equal to DPD,Do Something if not equal to DPD)))

如果是 TNT 则使用本网站

http://www.tnt.com/express/en_gb/site/searchresults.html?q=

如果是 DPD,则使用此网站

http://www.dpd.co.uk/tracking/quicktrack.do?search.consignmentNumber=

我们现在要做的就是将它附加到上面的公式中

=IF(F1="TNT",HYPERLINK("http://www."&F1&".com/express/en_gb/site/searchresults.html?q="& G1& "&search.searchType=16&search.javascriptValidated=0&appmode=guest"),IF(F1="DPD",HYPERLINK("http://www."&F1&".co.uk/tracking/quicktrack.do?search.consignmentNumber="& G1& "&search.searchType=16&search.javascriptValidated=0&appmode=guest"),""))

截图

【讨论】:

  • 感谢您的回答,但对于单元格 f 中的每个值,都会有不同的超链接地址。比如dpd网站和tnt网站会有不同的地址?
  • 您能否用 TNT 和 DPD 的示例更新您的问题,并提及这些网站是什么
  • 感谢您的回答。有没有办法给我这个函数的 VBA 代码?
  • 我可以,但我希望你先尝试一下 :) 我能想到的两种方法1 从上面复制公式,然后录制一个宏,然后将公式放入单元格 H1 中。停止宏并查看代码如何编写公式2 编写代码以循环遍历 col F 并检查值是什么,然后构造您的 If 语句。 :) 试一试,如果你被卡住了,那么只需发布你尝试过的代码,我们就会从那里拿走它?
  • 感谢您的帮助。该公式完美运行。会尝试你的建议,如果我遇到困难会回复你。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多