希望你们一切都好。我正在编写一个工作簿,其中有一列包含 10 个连续单元格。
在另一张纸上有一行,我想将数据粘贴为转置,但问题是,该行中的某些单元格不连续,其中一些单元格被隐藏。如图所示:
现在我只想将数据作为转置粘贴到可见单元格,并且这些单元格必须作为链接粘贴,就像对第一张纸进行任何更改一样,第二张纸中的相关单元格也应该更改。幸运的是,我自己做了很多工作,因为我发现如何仅通过以下 VBA 代码粘贴到可见单元格:
Sub PasteToVisible()
'Declarations
Dim Range1 As Range
Dim Range2 As Range
Dim InputRange As Range
Dim OutputRange As Range
'Prompt Box Title
xTitleId = "Paste to Visible"
'Start Input Range
Set InputRange = Application.Selection
'Select input range box
Set InputRange = Application.InputBox("Copy Range :", xTitleId, InputRange.Address, Type:=8)
'Select output range box
Set OutputRange = Application.InputBox("Paste Range:", xTitleId, Type:=8)
'Loop to paste the range in visible cells
For Each Range1 In InputRange
Range1.Copy
For Each Range2 In OutputRange
If Range2.EntireRow.RowHeight > 0 Then
Range2.PasteSpecial
Set OutputRange = Range2.Offset(1).Resize(OutputRange.Rows.Count)
Exit For
End If
Next
Next
Application.CutCopyMode = False
结束子'
这可以将值粘贴到可见单元格,但仅限于列(不是转置)。对于转置和链接,我使用简单的转置 excel 公式,如下图所示:
这可以以转置形式链接值。我想将所有三个功能(粘贴到可见、转置和作为链接)合并到一个步骤中。请帮我解决这个问题。我将非常感谢任何建议和帮助。提前致谢。
最佳答案
正如评论中所述,这是我在评论中发布的内容的示例。
Sub marine()
'Key board shortcut Ctrl + Shift + C
Dim cr As Range, dr As Range, c As Range
Dim xTitleId As String
Dim i As Integer
xTitleId = "Paste to Visible"
If TypeOf Selection Is Range Then Set cr = Selection
On Error Resume Next
Set dr = Application.InputBox("Destination Range: ", xTitleId, , , , , , 8)
On Error GoTo 0
If Not dr Is Nothing _
And Not cr Is Nothing Then
Set dr = dr.Resize(1, 1)
i = 0
For Each c In cr
Do While dr.Offset(, i).EntireColumn.Hidden
i = i + 1
Loop
dr.Offset(, i).Formula = "=" & c.Address(, , , True)
i = i + 1
Next
End If
End Sub
我在 Ctrl+Shift+C 快捷方式中分配了它。
它将复制当前选择,然后提示您输入目标单元格。
只需选择目标单元格(单个单元格即可),它就会粘贴链接。
尚未优化,但我希望这能给您一个想法。
关于vba - Excel 粘贴到可见、转置为链接组合功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48780099/