如何基于输入文本值格式验证并将文本插入Excel工作表定义的位置?

如何基于输入文本值格式验证并将文本插入Excel工作表定义的位置?,excel,vba,excel-formula,excel-2016,Excel,Vba,Excel Formula,Excel 2016,我想解析插入的单元格文本,并使用它在相应的工作表中正确填充单元格数据。例如,根据工作表1.1上单元格B2中的值,我想将文本插入工作表1.2上的指定位置。单元格文本按以下格式指定数据的目标位置: : 在这种情况下,工作表1.2上的相应数据应如下所示,并包含来自源工作表的数据位置: : 你认为不写VBA脚本有可能吗?您能否为非pro Excel用户提出一种实现此目标的方法;-) Alt+F11 双击左侧窗格中的工作簿模块(通常称为“ThisWorkbook”) 粘贴此代码。我试图对重要部分进行评

我想解析插入的单元格文本,并使用它在相应的工作表中正确填充单元格数据。例如,根据工作表
1.1
上单元格
B2
中的值,我想将文本插入工作表
1.2
上的指定位置。单元格文本按以下格式指定数据的目标位置:

在这种情况下,工作表
1.2
上的相应数据应如下所示,并包含来自源工作表的数据位置:

你认为不写VBA脚本有可能吗?您能否为非pro Excel用户提出一种实现此目标的方法;-)

  • Alt+F11
  • 双击左侧窗格中的工作簿模块(通常称为“ThisWorkbook”)
  • 粘贴此代码。我试图对重要部分进行评论
    Private子工作簿\u SheetChange(ByVal Sh作为对象,ByVal Target作为范围)
    Dim s()作为字符串
    Dim shTarg As工作表
    变暗LNGTARGPANELLOW尽可能长
    尺寸lngTargModuleCol尽可能长
    将sSourcePanel设置为字符串
    将sSourceModule设置为字符串
    调光范围
    关于错误GoTo EndSub
    如果Target.Count=1,则
    '检查单元格中的新值(模糊地称为Target)是否有2个冒号
    如果Len(目标)-Len(替换(目标“:”,”)=2,则
    '使用单元格中由冒号分隔的元素创建数组
    s()=拆分(目标“:”)
    '按名称将VBA对象与特定图纸关联
    设置shTarg=Me.张(s(0))
    '查找目标行
    集合c=shTarg.Range(“$A:$A”)。查找(s(1))
    如果c为空,则转到EndSub Else lngTargPanelRow=c.行
    '查找目标列
    设置c=目标范围(“1:1”)。查找(替换(s(2),“M”,“模块”))
    如果c为空,则转到EndSub Else lngTargModuleCol=c列
    '查找源面板
    sSourcePanel=Sh.Cells(Target.Row,1).Value
    '查找源模块
    sSourceModule=Sh.Cells(1,Target.Column).Value
    '缩短源模块名称
    sSourceModule=替换(sSourceModule,“模块”,“M”)
    '将值放入目标单元格
    Application.EnableEvents=False
    shTarg.Cells(lngTargPanelRow,lngTargModuleCol)=Sh.Name&“:”&sSourcePanel&“:”&sSourceModule
    其他的
    EndSub:
    MsgBox“在任何其他单元格中未进行任何更改”
    如果结束
    如果错误为0,则MsgBox“Error”&Err&“-”&Err.Description
    Application.EnableEvents=True
    如果结束
    端接头
    
  • Alt+F11
  • 双击左侧窗格中的工作簿模块(通常称为“ThisWorkbook”)
  • 粘贴此代码。我试图对重要部分进行评论
    Private子工作簿\u SheetChange(ByVal Sh作为对象,ByVal Target作为范围)
    Dim s()作为字符串
    Dim shTarg As工作表
    变暗LNGTARGPANELLOW尽可能长
    尺寸lngTargModuleCol尽可能长
    将sSourcePanel设置为字符串
    将sSourceModule设置为字符串
    调光范围
    关于错误GoTo EndSub
    如果Target.Count=1,则
    '检查单元格中的新值(模糊地称为Target)是否有2个冒号
    如果Len(目标)-Len(替换(目标“:”,”)=2,则
    '使用单元格中由冒号分隔的元素创建数组
    s()=拆分(目标“:”)
    '按名称将VBA对象与特定图纸关联
    设置shTarg=Me.张(s(0))
    '查找目标行
    集合c=shTarg.Range(“$A:$A”)。查找(s(1))
    如果c为空,则转到EndSub Else lngTargPanelRow=c.行
    '查找目标列
    设置c=目标范围(“1:1”)。查找(替换(s(2),“M”,“模块”))
    如果c为空,则转到EndSub Else lngTargModuleCol=c列
    '查找源面板
    sSourcePanel=Sh.Cells(Target.Row,1).Value
    '查找源模块
    sSourceModule=Sh.Cells(1,Target.Column).Value
    '缩短源模块名称
    sSourceModule=替换(sSourceModule,“模块”,“M”)
    '将值放入目标单元格
    Application.EnableEvents=False
    shTarg.Cells(lngTargPanelRow,lngTargModuleCol)=Sh.Name&“:”&sSourcePanel&“:”&sSourceModule
    其他的
    EndSub:
    MsgBox“在任何其他单元格中未进行任何更改”
    如果结束
    如果错误为0,则MsgBox“Error”&Err&“-”&Err.Description
    Application.EnableEvents=True
    如果结束
    端接头
    
    是否可以实现:是。没有VBA。。可能,但会非常麻烦(这可能只是因为我缺乏知识)。问题:如果您不想要基于VBA的方法,为什么要添加VBA标记?此外,为了让我们帮助您,您必须至少尝试解决您的场景。没有VBA,这是不可能的。若你们想要公式方法,你们应该知道你们的源单元格和目标单元格不会改变。在这种情况下,“目标”工作表可以接收来自所有其他工作表的引用,“源”工作表也可以是任何其他工作表。所以,如果你把一个公式写在一张纸上,它应该是固定不变的,但在你的情况下,你似乎会覆盖它,因此破坏所有的逻辑。它是可以实现的:是的。没有VBA。。可能,但会非常麻烦(这可能只是因为我缺乏知识)。问题:如果您不想要基于VBA的方法,为什么要添加VBA标记?此外,为了让我们帮助您,您必须至少尝试解决您的场景。没有VBA,这是不可能的。若你们想要公式方法,你们应该知道你们的源单元格和目标单元格不会改变。在这种情况下,“目标”工作表可以接收来自所有其他工作表的引用,“源”工作表也可以是任何其他工作表。所以,如果你把一个公式写在一张纸上,那应该是固定不变的——但在你的情况下,你似乎会覆盖它,因此破坏所有的逻辑。