我有一个包含不同表格的Excel文档。在一张表中我有专栏:
| text column |
|#test2,#test3,#test1|
|#test2, #test1 |
|#test1 |
在另一张表中,我有值的映射:
|some column| value |
|#test2 | Value2 |
|#test1 | Value1 |
|#test3 | Value3 |
所以我需要得到结果:
| text column |
| Value2, Value3, Value1|
| Value2, Value1 |
| Value1 |
这可以通过Excel工作表函数获得吗?
我试图爆炸数据,但我可能在具体单元格中有未定义的数量。还尝试使用VLOOKUP
,但我不知道如何使用它,因为我需要在VLOOKUP
之前拆分值。
答案 0 :(得分:1)
因为您需要某种形式的迭代,即拆分值,对每个项目执行操作并重新加入项目 - 使用Excel函数不太可能有这样的方法。如果您乐意使用VBA,那么用户定义的功能非常简单:
Option Explicit
Public Function RemapValues(rngSource As Range, rngLookup As Range, strDelimiter As String) As String
Dim arrIn() As String
Dim lngCounter As Long
Dim arrOut() As String
' split input string by supplied delimiter
arrIn = Split(rngSource.Value, strDelimiter, -1)
' set capacity of array storing re-mapped values
ReDim arrOut(LBound(arrIn) To UBound(arrIn))
' loop over input array
For lngCounter = LBound(arrIn) To UBound(arrIn)
' do the vlookup operation
arrOut(lngCounter) = WorksheetFunction.VLookup(arrIn(lngCounter), rngLookup, 2, 0)
Next lngCounter
' return the re-mapped values
RemapValues = Join(arrOut, strDelimiter)
End Function
E.g。
答案 1 :(得分:0)
我认为您会发现SUBSTITUTE功能将实现您的目标:
SUBSTITUTE(text,old_text,new_text,[instance_num])
SUBSTITUTE函数语法具有以下参数:
文字必填。文本或对包含要替换字符的文本的单元格的引用。
Old_text必需。要替换的文本。
New_text必需。要用old替换old_text的文本。
Instance_num可选。指定要用new_text替换的old_text的出现位置。如果指定instance_num,则仅替换old_text的该实例。否则,文本中每次出现的old_text都会更改为new_text。
你可以嵌套每个SUBSTITUTE,但我认为最终会很难阅读和维护。
根据所附图像,我建议的实施方法是逐步执行替换。因此,从A列中的orignal文本开始,将#test1替换为B列中的value1,然后使用C列中的公式替换现在B列中的文本中的#test2。