gpt4 book ai didi

vba - 工作表中列的动态显示

转载 作者:行者123 更新时间:2023-12-04 21:00:54 25 4
gpt4 key购买 nike

一个复杂的问题,但我会尝试解释。
我有一个主工作表“OPL”,其中包含几列。我在 VBA 中编写了一个代码,它根据我给定的标准提取信息,并在新的工作表“QB”中显示所有包含提取信息的列。

现在假设“OPL”有 10 列来自 A to J我的代码提取特定行并将其显示在相应列标题下的“QB”上。

现在我希望用户应该选择他想在“QB”上看到的列。假设他只想查看 C 和 D 列的信息。所以他从下拉列表中选择列 C 和 D,当他运行宏时,他应该只得到“QB”上的 C 列和 D 列。

p.s.我知道这是一个太宽泛的问题,而且我不能发布代码,因为它会使事情变得更加复杂。我不是要代码,但谁能指导我如何动态显示列?

最佳答案

说 QPL 就像:

enter image description here

在 QB 工作表代码区域中输入此事件宏:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim crit As Range, fCol As String
Dim lCol As String, fRow As Long, lRow As Long
Dim i As Long, j As Long, K1 As Long, K2 As Long
Dim wf As WorksheetFunction, Nul As String

Set wf = Application.WorksheetFunction
Set crit = Range("A1:D1")
Nul = ""
If Intersect(crit, Target) Is Nothing Then Exit Sub
If wf.CountIf(crit, Nul) > 0 Then Exit Sub
Application.EnableEvents = False

fCol = [A1]
lCol = [B1]
fRow = [C1]
lRow = [D1]
K1 = 2
K2 = 1
For i = fRow To lRow
For j = L2Num(fCol) To L2Num(lCol)
Cells(K1, K2).Formula = "=QPL!" & Num2L(j) & i
K2 = K2 + 1
Next j
K2 = 1
K1 = K1 + 1
Next i
Application.EnableEvents = True
End Sub

Public Function L2Num(S As String) As Long
L2Num = Asc(S) - 64
End Function

Public Function Num2L(L As Long) As String
Num2L = Chr(64 + L)
End Function

在 QB 中,我们在 中输入第一个所需列。 A1 中的最后一个所需列B1 中的第一个所需行C1 ,以及 中的最后一个所需行D1

当这个小标准 block 被填充时,宏将运行并填充单元格以检索所需的数据:

enter image description here

只需更改小标准 block 中的四个单元格中的任何一个即可重新运行宏。

关于vba - 工作表中列的动态显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36474328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com