宏查询分布在多张

时间:2015-07-14 00:54:12

标签: excel vba excel-vba

我的问题的措辞有点棘手,所以我已经包含了屏幕截图以使这更容易。我有两个单独的电子表格,目前还没有链接在一起。我被要求做的是:

对于在它们旁边有*的下拉列表,将此*下拉列表转换为首字母缩写词(即如果它的Home Visit *,那么这将转换为HV),并且它会自动进入单元格位置X.请参阅图像1,然后参考图像2)

Image One Image 2

因此,用户单击Sheet 1,选择相关的下拉字段,然后分配该任务花费的时间。然后,第二张表将使用此信息更新自身 - 它将插入用户名,程序和活动。这是非常棘手的地方。基于下拉选择,如果它是带星号的(*),那么基于字段类型它将它转换为一个集合的首字母缩略词,然后根据已经输入的日期将其放置在一个数据字段中提供。

我设计了两个电子表格,并且它们在后台有宏,但我似乎无法弄清楚如何最好地执行此操作。你会建议一个转置函数,它首先检查日期标准,然后是INDEX(MATCH)函数,以便将标准与预定义的名称范围相匹配,该名称范围会自动将Home Visit等转换为HV吗?我还不确定如何为每个读取的新条目插入分隔符。如果有人能提供帮助,我将非常感激。Snapshot of Screen1

1 个答案:

答案 0 :(得分:0)

我不是百分百肯定我理解你的问题,但是这里有:

如何添加Worksheet_Change事件以查找下拉列表中的更改,然后将其转换为首字母缩略词?

将以下代码放在感兴趣的表格中:

Private Sub Worksheet_Change(ByVal Target As Range)

    'If Cell A1 is changed, put the acronym into A2
    If Target.Row = 1 And Target.Column = 1 Then
        Cells(2, 1) = GetAcronym(Target.Value)
    End If

End Sub

Function GetAcronym(TheText As String) As String

    Dim result As String
    Dim x As Long

    'Always grab the first letter
    result = Mid(TheText, 1, 1)

    'Get the other letters
    For x = 2 To Len(TheText) - 1
        If Mid(TheText, x, 1) = " " Then result = result & Mid(TheText, x + 1, 1)
    Next x

    GetAcronym = UCase(result)

End Function