我的问题的措辞有点棘手,所以我已经包含了屏幕截图以使这更容易。我有两个单独的电子表格,目前还没有链接在一起。我被要求做的是:
对于在它们旁边有*的下拉列表,将此*下拉列表转换为首字母缩写词(即如果它的Home Visit *,那么这将转换为HV),并且它会自动进入单元格位置X.请参阅图像1,然后参考图像2)
因此,用户单击Sheet 1,选择相关的下拉字段,然后分配该任务花费的时间。然后,第二张表将使用此信息更新自身 - 它将插入用户名,程序和活动。这是非常棘手的地方。基于下拉选择,如果它是带星号的(*),那么基于字段类型它将它转换为一个集合的首字母缩略词,然后根据已经输入的日期将其放置在一个数据字段中提供。
我设计了两个电子表格,并且它们在后台有宏,但我似乎无法弄清楚如何最好地执行此操作。你会建议一个转置函数,它首先检查日期标准,然后是INDEX(MATCH)函数,以便将标准与预定义的名称范围相匹配,该名称范围会自动将Home Visit等转换为HV吗?我还不确定如何为每个读取的新条目插入分隔符。如果有人能提供帮助,我将非常感激。
答案 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