gpt4 book ai didi

excel - 从 2D 索引匹配操作派生的逗号分隔的单个单元格创建经过验证的列表

转载 作者:行者123 更新时间:2023-12-04 20:53:55 27 4
gpt4 key购买 nike

* 阅读更多信息 *
我有一个 3D 数据集。该数据集的第三维取决于外部整数值。为了便于使用并根据我的知识保持任务的可实现性,我创建了一个 2D 表,其中包含代表第三维的逗号分隔单元格。主要问题是主动改变二维表的外部整数。

* 主要问题 *
我需要从位于同一工作簿中单独工作表的单个单元格中的逗号分隔列表中创建一个经过验证的下拉单元格。逗号分隔列表是从 2D INDEX-MATCH 函数生成的。我正在尝试通过 VBA 函数完成此操作,以轻松选择输入并调用子例程来创建验证列表。 (如果不需要子程序;忽略)

二维表
2D Table

输出单元
Output Cells
*暂时忽略 DCTG,这将是相同的过程,但用于不同的 3D 数据集。

我想要一个函数来接收(InputCell,OutputCell)。 InputCell 依赖于其他三个先前选择的数据点(在背景中引用的整数之外,以及表格的 x 和 y),其当前代码是

=INDEX(Rmag_For_Casting_Material,MATCH(Updated!E7,RMAG_Casting_Method,0),MATCH(Updated!E6,RMAG_Material_Class,0))

当提供给验证数据列表工具时,它会创建一个“A、B、C、D”的单个选项列表,而不是“A”、“B”、“C”的多选项列表,...

* 当前研究 *
Private Sub Workbook_Open()
AddCSVListValidation "Task", "A1", "A2"
End Sub

Sub AddCSVListValidation(sheet, cellSource, cellTarget)
txt = ActiveWorkbook.Worksheets(sheet).Range(cellSource).Value
ActiveWorkbook.Worksheets(sheet).Range(cellTarget) = "Select your values here"
With ActiveWorkbook.Worksheets(sheet).Range(cellTarget).Validation
.Delete
.Add Type:=xlValidateList, Formula1:="a,b,c"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

我相信这会创建一个子例程来创建一个经过验证的列表,但是每次我在不同的单元格中创建一个新的经过验证的列表时都需要多个副本。或者我可以替换“任务”、“A1”、“A2”并重新运行子程序吗?我什至无法自行运行子程序。这个“任务”工作表名称是否必要?

我相信这段代码对于我想做的事情来说是一个很好的支柱,但我不够熟练,无法创建一个函数并解析子和函数之间的信息。

最佳答案

以下是我的建议

您可以这样做,而不是通过 VBA 将数据验证应用于所有单元格

  • 创建一个 VBA 代码来分隔逗号分隔的文本以插入每个
    值在单独的单元格中,并创建一个包含这些列表的范围
  • 创建一个引用此范围的命名列表
  • 使用此将数据验证规则应用于所有必需的单元格
    名单

  • 找到下面的 VBA 代码来做到这一点
    Sub makeNamedRange()

    sheet_name = "Sheet1"

    input_text = Sheets(sheet_name).Range("B1").Value
    arr_text = Split(input_text, ",")

    i = 1
    For Each elm In arr_text
    Sheets(sheet_name).Range("C" & i).Value = elm
    i = i + 1
    Next

    ActiveWorkbook.Names.Add Name:="data_validation_list", RefersTo:="=" & sheet_name & "!$C$1:$C$" & i - 1

    End Sub

    笔记
  • 该代码采用逗号分隔的文本 B1
  • 并将其值提取到 C1 到 C(n)
  • 您可以在工作表中更改它
  • 您可以根据您的要求在工作表打开或任何其他事件上调用此函数,以使用新数据更新列表。
  • 关于excel - 从 2D 索引匹配操作派生的逗号分隔的单个单元格创建经过验证的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444926/

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