Foxtable(狐表)用户栏目专家坐堂 → 转置后的临时表怎么用


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

主题:转置后的临时表怎么用

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/12/2 10:41:00 [只看该作者]

甜老师,昨天你不在,有点蓝说出他看不懂,需要你

Dim ls As new List(Of String)
Dim dt As Table = Tables("sp表")
For Each dc As Col In dt.Cols
    If dc.Caption.StartsWith("p") Then
        ls.add(dc.name)
    End If
Next
Dim ary1(ls.count-1) As Double
Dim ary2 = ls.ToArray
For i As Integer = 0 To ary2.length-1
    ary1(i) = dt.Compute("sum(" & ary2(i) & ")")
Next
array.sort(ary1, ary2)
For i As Integer = 0 To ary2.length-1
    Tables("sp表").Cols(ary2(i)).Move(1)
Next
Dim df As Double() = ary1
Dim rs As Integer = 15
Dim hj(rs) As String
For i As Integer = 0 To rs-1
    hj(i) = Tables("sp表").Rows(i)("合计")
Next
hj(rs) = 0
For i As Integer = 0 To ary2.length-1
    Dim idx = array.Indexof(hj, cstr(df.length-i))
    Dim s As Double = math.Abs(ls(i-1)-(idx))
    msgbox(s)
Next


此主题相关图片如下:图片1.png
按此在新窗口浏览图片

[此贴子已经被作者于2018/12/2 10:42:43编辑过]

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


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

 

具体的实例发上来测试。

 

 


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/12/3 9:14:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sp表分析.foxdb

命令在窗口1,D按钮是计算差异量的


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


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

Dim ls As new List(Of String)
Dim dt As Table = Tables("sp表")
For Each dc As Col In dt.Cols
    If dc.Caption.StartsWith("p") Then
        ls.add(dc.name)
    End If
Next
Dim ary1(ls.count-1) As Double
Dim ary2 = ls.ToArray
For i As Integer = 0 To ary2.length-1
    ary1(i) = dt.Compute("sum(" & ary2(i) & ")")
Next
array.sort(ary1, ary2)
For i As Integer = 0 To ary2.length-1
    Tables("sp表").Cols(ary2(i)).Move(1)
Next
Tables("sp表").sort = "得分 desc"
Dim df As Double() = ary1
Dim rs As Integer = Tables("sp表").count
Dim hj(rs) As String
For i As Integer = 0 To rs-1
    hj(i) = Tables("sp表").Rows(i)("得分")
Next
hj(rs) = Tables("sp表").Rows(rs-1)("得分") -1
For i As Integer = 1 To ary1.length
    Dim idx = array.Indexof(hj, cstr(ary1.length-i))
    If idx >= 0 Then
        Dim s As Double = math.Abs(ary1(i-1)-(idx))
        msgbox(s)
    End If
Next

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/12/3 10:27:00 [只看该作者]

甜老师,149楼你帮我看看

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


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

以下是引用fytea在2018/12/3 10:27:00的发言:
甜老师,149楼你帮我看看

 

没看懂你要问什么。请理清和说明具体的计算逻辑,以及最后应该得到什么结果。


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/12/3 11:16:00 [只看该作者]

甜老师,就是求
图片点击可在新窗口打开查看此主题相关图片如下:图片3.png
图片点击可在新窗口打开查看


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


[此贴子已经被作者于2018/12/3 11:16:29编辑过]

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


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

Dim ls As new List(Of String)
Dim dt As Table = Tables("sp表")
For Each dc As Col In dt.Cols
    If dc.Caption.StartsWith("p") Then
        ls.add(dc.name)
    End If
Next
Dim ary1(ls.count-1) As Double
Dim ary2 = ls.ToArray
For i As Integer = 0 To ary2.length-1
    ary1(i) = dt.Compute("sum(" & ary2(i) & ")")
Next
array.sort(ary1, ary2)
For i As Integer = 0 To ary2.length-1
    Tables("sp表").Cols(ary2(i)).Move(1)
Next
Tables("sp表").sort = "得分 desc"
Dim df As Double() = ary1
Dim rs As Integer = Tables("sp表").count
For i As Integer = 0 To rs-1
    Dim sum1 = 0
    Dim sum2 = 0
    Dim r As Row = Tables("sp表").Rows(i)
    For j As Integer = 0 To ary2.length-1
        If ary2.length-j > r("得分") Then
            If r(ary2(j)) = 1 Then
                sum2 += ary1(j)
            End If
        Else
            If r(ary2(j)) = 0 Then
                sum1 += ary1(j)
            End If
        End If
    Next
    output.show(sum1 & " " & sum2)
Next

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/12/3 22:10:00 [只看该作者]

甜老师:s值如何合计

For i As Integer = 1 To ary1.length
    Dim idx = array.Indexof(hj, cstr(ary1.length-i))
    If idx >= 0 Then
        Dim s As Double = math.Abs(ary1(i-1)-(idx))
     End If
Next


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


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/3 22:32:00 [只看该作者]

这个意思?

Dim s As Double = 0

For i As Integer = 1 To ary1.length
    Dim idx = array.Indexof(hj, cstr(ary1.length-i))
    If idx >= 0 Then
        s = s + math.Abs(ary1(i-1)-(idx))
     End If
Next 

 回到顶部