| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:请教交换“整块”
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
收藏
已结贴  问题点数:20 回复次数:3 
请教交换“整块”
各位前辈好,请教关于任意交换“整块”的问题:是这样,共5块,每块5行5列(既然是“整块”交换,故我想每块几行几列是无关的),块的次序与原表中块的次序不一样时就算得到一种新情况(“整块”交换时,每块内的原行次序保持不变),谢谢先生指教,诚挚的感谢(下面所附的每块5行5列粘在一起了,在excel表中比较明显)
1    2    3    4    5
6    7    8    9    10
11    12    13    14    15
16    17    18    19    20
21    22    23    24    25
26    27    28    29    30
31    32    33    34    35
36    37    38    39    40
41    42    43    44    45
46    47    48    49    50
51    52    53    54    55
56    57    58    59    60
61    62    63    64    65
66    67    68    69    70
71    72    73    74    75
76    77    78    79    80
81    82    83    84    85
86    87    88    89    90
91    92    93    94    95
96    97    98    99    100
101    102    103    104    105
106    107    108    109    110
111    112    113    114    115
116    117    118    119    120
121    122    123    124    125
搜索更多相关主题的帖子: excel 
2015-01-07 12:25
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:10 
新建一个工程,拷贝下列代码,每点击一次窗口可看到随机两个5*5块数据交换的效果。

Dim a(24, 4) As Integer

Private Sub Form_Click()
  '产生随机5*5交换
  Dim i As Integer, j As Integer, s As Integer, e As Integer, k As Integer
  Me.Cls
  Randomize
  s = Rnd * 4
  Do
    e = Rnd * 4
  Loop While s = e
  s = s * 5: e = e * 5
  For i = 0 To 4
    For j = 0 To 4
      k = a(i + s, j)
      a(i + s, j) = a(i + e, j)
      a(i + e, j) = k '交换数据
    Next
  Next
  For i = 0 To 24
    For j = 0 To 4
      Print a(i, j),
    Next
    Print
  Next
  s = s + 1
  e = e + 1
  MsgBox "交换" & s & "-" & (s + 4) & "块和" & e & "-" & (e + 4) & "块的数据"
      
End Sub

Private Sub Form_Load()
  Dim i As Integer, j As Integer
  Me.AutoRedraw = True
  Me.Width = 6000: Me.Height = 5100
  For i = 0 To 24
    For j = 0 To 4
      a(i, j) = i * 5 + j + 1   '产生默认的数据块
      Print a(i, j),    '显示输出原始数据块
    Next
    Print
  Next
End Sub
收到的鲜花
  • fdxxhjc2015-01-09 10:57 送鲜花  3朵   附言:我很赞同
2015-01-07 19:52
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 2楼 xzlxzlxzl
哦,谢谢先生
2015-01-09 10:56
潜龙出水
Rank: 2
等 级:论坛游民
帖 子:3
专家分:30
注 册:2014-9-4
收藏
得分:10 
程序代码:
Option Explicit

Private arrMyArray(4, 4, 4) As Integer    '定义5个( 5 行 * 5 列)的数组

Private Sub Init_Swap_Show(Optional Init, Optional Arg1, Optional Arg2)
    Dim i As Integer, j As Integer, k As Integer, temp As Integer, a1 As Integer, a2 As Integer, flag As Integer
    If Not IsMissing(Arg1) And Not IsMissing(Arg2) Then
        If Arg1 < Arg2 Then '把较小值的参数,赋值给a1,方便转换
            a1 = Arg1: a2 = Arg2
        Else
            a1 = Arg2: a2 = Arg1
        End If
    End If
    For i = 0 To 4
        If flag = 0 Then
            If Not IsMissing(Arg1) And Not IsMissing(Arg2) Then
                If Arg1 >= 0 And Arg1 < 5 And Arg2 >= 0 And Arg2 < 5 Then
                    If i = a1 Then
                        flag = 1
                    End If
                Else
                    Exit Sub    '如果最后面两个参数不是 0 ~ 4之间的数值就退出
                End If
            End If
        End If
        For j = 0 To 4
            For k = 0 To 4
                If IsMissing(Init) Then arrMyArray(k, j, i) = k + j * 5 + i * 25
                
                If flag = 1 Then
                    temp = arrMyArray(k, j, a2)
                    arrMyArray(k, j, a2) = arrMyArray(k, j, a1)
                    arrMyArray(k, j, a1) = temp
                End If
                Debug.Print arrMyArray(k, j, i),
            Next k
            Debug.Print
        Next j
        Debug.Print
        If flag = 1 Then flag = 0
    Next i
End Sub

Private Sub Form_Click()
   Call Init_Swap_Show   '初始化数据
   Debug.Print "====================================分 割 线===================================="
   Call Init_Swap_Show(1, Int(Rnd * 5), Int(Rnd * 5)) '随机2个方块数据互换
End Sub
2015-01-09 22:38
快速回复:请教交换“整块”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021538 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved