以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助【横竖转换】  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104379)

--  作者:13968559581
--  发布时间:2017/7/28 11:26:00
--  求助【横竖转换】
请教:
   我现在有源表为值班明细表,我想横竖转换一下
 图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看  图片点击可在新窗口打开查看图片点击可在新窗口打开查看  Dim dtb As New DataTableBuilder("表d")
dtb.AddDef("日期", Gettype(String), 32)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),32)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
   

    Dim dr1 As DataRow = DataTables("表d").AddNew()
    dr1("日期") = v
 For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = \'" & v & "\'")
     
  dr1(dr2("部门")) = dr2("值班人员")
    Next
Next
MainTable = Tables("表d")
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员值班表.xlsx



图片点击可在新窗口打开查看此主题相关图片如下:实际结果.png
图片点击可在新窗口打开查看
这个实际达不到的我效果,当某天某部门有多人值班的时候
图片点击可在新窗口打开查看此主题相关图片如下:源表.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/7/28 11:33:05编辑过]

--  作者:有点甜
--  发布时间:2017/7/28 11:30:00
--  

dr1(dr2("部门")) = dr2("值班人员")

 

改成

 

dr1(dr2("部门")) = (dr1(dr2("部门")) & "," & dr2("值班人员")).Trim(",")


--  作者:有点甜
--  发布时间:2017/7/28 11:30:00
--  

 如果还有问题,具体foxtable例子发上来。


--  作者:13968559581
--  发布时间:2017/7/28 11:39:00
--  
申请进一步协助:
      谢谢你的方案,但感觉仍有问题,假如人员多的话,这一列里就会很长。
      还有我实际应用的时候,我是有两列的:姓名和手机号码,如果按你这个方法,就更不好操作了,有没有更好的办法,比如说一人一行。
      谢谢

--  作者:有点甜
--  发布时间:2017/7/28 11:53:00
--  

Dim dtb As New DataTableBuilder("表d")
dtb.AddDef("日期", Gettype(String), 32)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),32)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
    For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = \'" & v & "\'")
        Dim dr1 As DataRow = DataTables("表d").Find("日期 = " & v & " and " & dr2("部门") & " is null")
        If dr1 Is Nothing Then
            dr1 = DataTables("表D").AddNew()
            dr1("日期") = v
        End If
        dr1(dr2("部门")) = dr2("值班人员")
    Next
Next
MainTable = Tables("表d")


--  作者:13968559581
--  发布时间:2017/7/28 13:10:00
--  再请教
你好,你刚刚的语句执行出来了,但是还需要涉及到合并的问题,所以
  
 我现在想在之前那个语句,也就是在同一个单元格里加换行符,执行结果也是为空的,什么原因?
Dim dtb As New DataTableBuilder("表e")
dtb.AddDef("日期", Gettype(String), 150)
For Each v As String In DataTables("人员值班表").GetValues("部门")
    dtb.AddDef(v, Gettype(String),150)
Next
dtb.Build()

For Each v As String In DataTables("人员值班表").GetValues("日期")
    Dim dr1 As DataRow = DataTables("表e").AddNew()
    dr1("日期") = v
 For Each dr2 As DataRow In DataTables("人员值班表").Select("日期 = \'" & v & "\'")
  dr1(dr2("部门")) = (dr1(dr2("部门")) & vbcrlf  & dr2("值班人员") & dr2("手机"))

    Next
Next
MainTable = Tables("表e")

[此贴子已经被作者于2017/7/28 13:18:40编辑过]

--  作者:有点甜
--  发布时间:2017/7/28 14:19:00
--  

 

        dr1(dr2("部门")) = (dr1(dr2("部门")) & vbcrlf  & dr2("值班人员") & dr2("手机")).trim(chr(13), chr(10))