Foxtable(狐表)用户栏目专家坐堂 → [求助]合并的问题


  共有2148人关注过本帖树形打印复制链接

主题:[求助]合并的问题

帅哥哟,离线,有人找我吗?
81538475
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:10296 威望:0 精华:1 注册:2018/1/20 12:40:00
[求助]合并的问题  发帖心情 Post By:2018/10/11 16:59:00 [只看该作者]


能不能根据第三行和第四行来合并第二列呢,现在是把2.3.4行的第二列都给合并了。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181011165612.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181011165552.png
图片点击可在新窗口打开查看
With Tables("表A")
        .MergeMode = MergeModeEnum.free  '标准合并模式
        .MergeCols.Clear() '清除原来的合并列
        
        .MergeCols.Add("第一列") '加入要合并的列
        .MergeCols.Add("第二列") '加入要合并的列
        

        .MergeSort = "第一列,第二列" '设置合并模式下的排序方式
        .AllowMerge = True '启用合并模式
    End With

[此贴子已经被作者于2018/10/11 16:59:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 17:01:00 [只看该作者]

用标准合并

 

        .MergeMode = MergeModeEnum.Standard


 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:10296 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/10/11 17:36:00 [只看该作者]

这种模式的话,中间如果隔开一行,就合并不了了呀。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 17:38:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:10296 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/10/11 17:59:00 [只看该作者]

麻烦在问下,这个能够让第一列先排个序在合并吗,现在就算我加一段  .mergesort=“第一列,第三列”  或者是  .sort=“第一列,第三列”   都不行。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 18:03:00 [只看该作者]

我测试没问题,先设置sort,再使用4楼代码。

 

具体问题上传实例测试。


 回到顶部
帅哥哟,离线,有人找我吗?
81538475
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1279 积分:10296 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2018/10/11 18:09:00 [只看该作者]

可以了。能不能不合并空白单元格。如果这个可以就完美了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 18:12:00 [只看该作者]

Dim t As Table = Tables("表a")
Dim cs As String() = {"第一列", "第二列", "第五列"}

'取消合并
Dim ls As new List(of object)
For Each r As object In t.Grid.MergedRanges
        ls.add(r)
Next
For Each r As object In ls
    t.Grid.MergedRanges.Remove(r)
Next

'设置合并
For i As Integer = 0 To cs.length-1
    Dim top As Integer = 0
    For j As Integer = 1 To t.Rows.count-1
        Dim r1 As Row = t.Rows(j-1)
        Dim r2 As Row = t.Rows(j)
        Dim same As Boolean = True
        For k As Integer = 0 To i
            If r2(cs(k)) = Nothing OrElse r1(cs(k)) <> r2(cs(k)) Then
                same = False
                Exit For
            End If
        Next
       
        If same = False  Then
            t.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
            Dim rng As C1.Win.C1FlexGrid.CellRange = t.Grid.GetCellRange(top+t.HeaderRows, t.cols(cs(i)).Index+1, j+t.HeaderRows-1, t.cols(cs(i)).Index+1)
            t.Grid.MergedRanges.add(rng)
           
            Top = j
        ElseIf j = t.rows.count-1 Then
            Dim rng As C1.Win.C1FlexGrid.CellRange = t.Grid.GetCellRange(top+t.HeaderRows, t.cols(cs(i)).Index+1, j+t.HeaderRows, t.cols(cs(i)).Index+1)
            t.Grid.MergedRanges.add(rng)
        End If
    Next
   
Next


 回到顶部