【问题标题】:VBA Copying cells to another worksheet where cells have the same valueVBA将单元格复制到另一个工作表,其中单元格具有相同的值
【发布时间】:2016-01-28 18:44:04
【问题描述】:

我有两个工作表正在使用长序列号作为单元格值。一张表 (Sheet1) 包含每个单独序列号的列表,这些序列号超链接到引用该项目的网页。此列表的范围为 A1:A31。

第二张表 (Sheet2) 有大量相同序列号的列表,但在 G1:G102 范围内。不同的是,这个列表没有超链接,序列号有时会出现多次。还有一些区域的单元格是空白的,因此它将连续的数据列分开。

我基本上想编写一个宏,它采用 Sheet1 中的第一个列表,并且对于每个单元格,它将它与 Sheet2 列 G 中的每个单元格进行比较。然后,如果值匹配,我想复制超链接单元格从工作表 1 并将其粘贴到与工作表 2 中具有相同值的单元格。因此,Sheet2 列 G 现在有一个完整填充的超链接序列号列表。

谁能帮我解决这个问题?这是我到目前为止所拥有的......似乎不起作用:

Sub CopyHyperlinks()

Dim cell As Excel.Range
Dim myRange As Excel.Range
Dim newRange As Excel.Range

Set myRange = Excel.ThisWorkbook.Sheets("Contents").Range("A1:A31")
Set newRange = Excel.ThisWorkbook.Sheets("Sheet1").Range("G1:G102")

For Each cell In myRange
    If myRange.Cells.Value = newRange.Cells.Value Then newRange.Cells.Value = myRange.Cells.Value
Next cell

End Sub'

【问题讨论】:

  • 除了序列号不同之外,url是一样的吗? (我在问,因为如果是这种情况,您只能使用公式来执行此操作)。更好的是,请发布两个数据集的屏幕截图。这会有很大帮助。
  • 请检查HYPERLINK-函数。它可能会满足您的所有需求
  • 您正在使用For Each cell in myRange,但实际上从未使用过Cell。不要将 Cells 与您的 cell 变量混淆。尝试只做If .cel.value = ,但随后您需要修复newRange.Cells.Value,以合并cell。您是否只想查看myRange 是否有一个单元格位于整个newRange 工作表中?
  • 我不知道如何发布图片:/谢谢你们的建议,但基本上我想通过 newRange (这有尚未超链接的序列号)并将这些单元格替换为myRange 中的超链接等价物。
  • 例如,myRange 可能有一个带有超链接的值为 12345 的单元格。 newRange 可能有一个值为 12345 的单元格,它只是一个值,而不是超链接。如何比较这两个数据集,以及在哪里匹配,将非超链接单元格替换为超链接单元格。我知道还有其他功能可以做到这一点,我只是想知道是否有人知道这种具体的做法。谢谢! :)

标签: vba excel


【解决方案1】:

this little function。把这个:

Function GetHyperLinkAddress(rng As Range) As String
Dim hl As Hyperlink
For Each hl In rng.Parent.Hyperlinks
    If hl.Range.Address = rng.Address Then
        GetHyperLinkAddress = hl.Address
        Exit Function
    End If
Next hl
GetHyperLinkAddress = "Not Found"
End Function

在一个模块中。在电子表格中,添加

=GetHyperLinkAddress(Cell#)

在带有超链接的单元格旁边。然后,您可以使用 vlookup 进行匹配。

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多