返回列表 上一主題 發帖

[發問] 計算總數並重新排序

回復 4# wei9133

計算總數並重新排序 (4775).rar (8.52 KB)

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

=INT((ROW(A1)-1)/總數) + MOD((ROW(A1)-1)*(總數/基準數),總數) + 1

總數及基準數 可以自行定義名稱或改為儲存格名稱
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復  wei9133


抱歉,
我自己實際調整過後,
有了解你的問題了。

我調整好兩個版本給你參考,
...
a5007185 發表於 2018-8-1 23:44


你好,昨天測試了一下應該是無誤了
非常感謝你
實際上在撕的時候發現還有可以改進的地方
(這個是我一開始沒想到的部分,並不是你提供的東西有誤)
鑒於你大概懂我的需求是甚麼了,所以我簡單的用圖表示一下
(我連上面你解決的原理都不懂,所以也可能說不太清楚)
你先參考一下我的附件


麻煩一樣要直的結果,可能的話幫我把算出來的陣列放在後方
目前的東西一定是3*3 3*4 3*5 如果畫陣列麻煩就不用畫了
有直的結果就萬分感激了

縱向排序.rar (3.56 KB)
至於實際成果我要丟進系統印出來才知道對不對
m(_ _)m

TOP

回復 13# wei9133

弄好囉

180804_表格排序.rar (27.42 KB)

TOP

回復  wei9133

弄好囉
a5007185 發表於 2018-8-5 00:13



    感謝你,目前看右方陣列應該是我要的東西了
   待找天有空的時候測試,萬分感謝 m(_ _)m

TOP

你好,我拿舊的正確版本比對發現好像東西不對...

先前正確的vba版本(橫向)
  1. 1
  2. 16
  3. 31
  4. 46
  5. 61
  6. 76
  7. 91
  8. 106
  9. 121
  10. 2
  11. 17
  12. 32
  13. 47
  14. 62
  15. 77
  16. 92
  17. 107
  18. 122
  19. 3
  20. 18
  21. 33
  22. 48
  23. 63
  24. 78
  25. 93
  26. 108
  27. 123
  28. 4
  29. 19
  30. 34
  31. 49
  32. 64
  33. 79
  34. 94
  35. 109
  36. 124
  37. 5
  38. 20
  39. 35
  40. 50
  41. 65
  42. 80
  43. 95
  44. 110
  45. 125
  46. 6
  47. 21
  48. 36
  49. 51
  50. 66
  51. 81
  52. 96
  53. 111

  54. 7
  55. 22
  56. 37
  57. 52
  58. 67
  59. 82
  60. 97
  61. 112

  62. 8
  63. 23
  64. 38
  65. 53
  66. 68
  67. 83
  68. 98
  69. 113

  70. 9
  71. 24
  72. 39
  73. 54
  74. 69
  75. 84
  76. 99
  77. 114

  78. 10
  79. 25
  80. 40
  81. 55
  82. 70
  83. 85
  84. 100
  85. 115

  86. 11
  87. 26
  88. 41
  89. 56
  90. 71
  91. 86
  92. 101
  93. 116

  94. 12
  95. 27
  96. 42
  97. 57
  98. 72
  99. 87
  100. 102
  101. 117

  102. 13
  103. 28
  104. 43
  105. 58
  106. 73
  107. 88
  108. 103
  109. 118

  110. 14
  111. 29
  112. 44
  113. 59
  114. 74
  115. 89
  116. 104
  117. 119

  118. 15
  119. 30
  120. 45
  121. 60
  122. 75
  123. 90
  124. 105
  125. 120
複製代碼
你這次所提供的vab橫向版本
  1. 1
  2. 28
  3. 55
  4. 82
  5. 109
  6. 2
  7. 29
  8. 56
  9. 83
  10. 110
  11. 3
  12. 30
  13. 57
  14. 84
  15. 111
  16. 4
  17. 31
  18. 58
  19. 85
  20. 112
  21. 5
  22. 32
  23. 59
  24. 86
  25. 113
  26. 6
  27. 33
  28. 60
  29. 87
  30. 114
  31. 7
  32. 34
  33. 61
  34. 88
  35. 115
  36. 8
  37. 35
  38. 62
  39. 89
  40. 116
  41. 9
  42. 36
  43. 63
  44. 90
  45. 117
  46. 10
  47. 37
  48. 64
  49. 91
  50. 118
  51. 11
  52. 38
  53. 65
  54. 92
  55. 119
  56. 12
  57. 39
  58. 66
  59. 93
  60. 120
  61. 13
  62. 40
  63. 67
  64. 94
  65. 121
  66. 14
  67. 41
  68. 68
  69. 95
  70. 122
  71. 15
  72. 42
  73. 69
  74. 96
  75. 123
  76. 16
  77. 43
  78. 70
  79. 97
  80. 124
  81. 17
  82. 44
  83. 71
  84. 98
  85. 125
  86. 18
  87. 45
  88. 72
  89. 99

  90. 19
  91. 46
  92. 73
  93. 100

  94. 20
  95. 47
  96. 74
  97. 101

  98. 21
  99. 48
  100. 75
  101. 102

  102. 22
  103. 49
  104. 76
  105. 103

  106. 23
  107. 50
  108. 77
  109. 104

  110. 24
  111. 51
  112. 78
  113. 105

  114. 25
  115. 52
  116. 79
  117. 106

  118. 26
  119. 53
  120. 80
  121. 107

  122. 27
  123. 54
  124. 81
  125. 108
複製代碼
我再解釋一遍整體的需求 (以橫向為例)
原本的系統為數據若干行,依照1~N依次丟入
長下圖這樣
  1. 01  |  A1
  2. 16  |  A2
  3. 02  |  A3
  4. 17  |  A4
  5. 03  |  A5
  6. 18  |  B1
  7. 04  |  B2
  8. 19  |  B3
  9. 05  |  B4
  10. 20  |  B5
  11. 06  |  B6
  12. 21  |  B7
  13. 07  |  B8
  14. 22  |  B9
  15. 08  |  B10
  16. 23  |  B11
  17. 09  |  B12
  18. 24  |  B13
  19. 10  |  B14
  20. 25  |  B15
  21. 11  |  C1
  22. 26  |  C2
  23. 12  |  C3
  24. 27  |  C4
  25. 13  |  C5
  26. 28  |  C6
  27. 14  |  C7
  28. 29  |  C8
  29. 15  |  C9
  30. 30  |  C10
複製代碼



附件為你原本提供的vba版本
排序vba版.rar (14.88 KB)
原本在2順位的要擺到16去才會在第二張的第一格
所以這次的版本好像是錯的
至於縱向的部分,我先整理一下,等會po上來

TOP

或許是我用vba畫格子才會一次一次誤導各位的思路
不過不畫出來我不會解釋我所需要的東西(也不知道順序該怎麼擺)

縱向的部分應該長這樣



不明白的部分可以看附件
我大概排了一下,應該是這樣子沒錯
你的陣列格子是對的,但結果跟我畫出來的不一樣
應該是因為我沒有提到系統是固定順序吃15格進去然後印出
(沒有辦法指定他吃的是縱還是橫,所以我才需要重排後丟入)
我需要的是重新排序後讓系統15格15格的吃進去
在我撕的時候出來的結果才是陣列的圖

所以以45為例,正確的縱向排序應該是這樣
  1. 01 | A01
  2. 16 | A02
  3. 31 | A03
  4. 04 | A04
  5. 19 | A05
  6. 34 | A06
  7. 07 | A07
  8. 22 | A08
  9. 37 | A09
  10. 10 | A10
  11. 25 | B01
  12. 40 | B02
  13. 13 | B03
  14. 28 | B04
  15. 43 | B05
  16. 02 | B06
  17. 17 | B07
  18. 32 | B08
  19. 05 | B09
  20. 20 | B10
  21. 35 | B11
  22. 08 | C01
  23. 23 | C02
  24. 38 | C03
  25. 11 | C04
  26. 26 | C05
  27. 41 | C06
  28. 14 | C07
  29. 29 | C08
  30. 44 | C09
  31. 03 | C10
  32. 18 | D01
  33. 33 | D02
  34. 06 | D03
  35. 21 | D04
  36. 36 | D05
  37. 09 | D06
  38. 24 | D07
  39. 39 | D08
  40. 12 | E01
  41. 27 | E02
  42. 42 | E03
  43. 15 | E04
  44. 30 | E05
  45. 45 | E06
複製代碼
表格縱向排序.rar (24.63 KB)

抱歉我不知道要怎樣解釋才能夠讓你清楚明白我的需求
導致你多花了那麼時間
在此再次拜謝你的幫忙 m(_ _)m

TOP

回復 17# wei9133

再不行,我們私下喬
    表格排序.zip (87.43 KB)

TOP

本帖最後由 wei9133 於 2018-8-8 01:22 編輯
回復  wei9133

再不行,我們私下喬
a5007185 發表於 2018-8-7 11:32


你好,看橫向部分就知道不對
現在60算出來是
  1. 1
  2. 5
  3. 9
  4. 13
  5. 17
  6. 21
  7. 25
  8. 29
  9. 33
  10. 37
  11. 41
  12. 45
  13. 49
  14. 53
  15. 57
  16. 2
  17. 6
  18. 10
  19. 14
  20. 18
  21. 22
  22. 26
  23. 30
  24. 34
  25. 38
  26. 42
  27. 46
  28. 50
  29. 54
  30. 58
  31. 3
  32. 7
  33. 11
  34. 15
  35. 19
  36. 23
  37. 27
  38. 31
  39. 35
  40. 39
  41. 43
  42. 47
  43. 51
  44. 55
  45. 59
  46. 4
  47. 8
  48. 12
  49. 16
  50. 20
  51. 24
  52. 28
  53. 32
  54. 36
  55. 40
  56. 44
  57. 48
  58. 52
  59. 56
  60. 60
複製代碼
正確的應該是
  1. 1
  2. 16
  3. 31
  4. 46
  5. 2
  6. 17
  7. 32
  8. 47
  9. 3
  10. 18
  11. 33
  12. 48
  13. 4
  14. 19
  15. 34
  16. 49
  17. 5
  18. 20
  19. 35
  20. 50
  21. 6
  22. 21
  23. 36
  24. 51
  25. 7
  26. 22
  27. 37
  28. 52
  29. 8
  30. 23
  31. 38
  32. 53
  33. 9
  34. 24
  35. 39
  36. 54
  37. 10
  38. 25
  39. 40
  40. 55
  41. 11
  42. 26
  43. 41
  44. 56
  45. 12
  46. 27
  47. 42
  48. 57
  49. 13
  50. 28
  51. 43
  52. 58
  53. 14
  54. 29
  55. 44
  56. 59
  57. 15
  58. 30
  59. 45
  60. 60
複製代碼
我想我們卡在陣列這裡了...
實際上不是要你重排陣列,因為我這是重新排序的輔助列
系統永遠是15為1張紙照順序吃入(頂多就是最下面那幾排撕掉變成12或9)
請看下圖



東西丟進系統
它的順序是
第一張紙01~15
第二張紙16~30
第三張紙31~45
第四張紙46~60
依此類推

它的順序並不是我能改變的
所以我必須改變丟進去的順序
把原本應該放在2位置的排到16的位置去
  1. 1        A1
  2. 16        A2
  3. 31        A3
  4. 46        A4
  5. 2        A5
  6. 17        A6
  7. 32        A7
  8. 47        A8
  9. 3        B1
  10. 18        B2
  11. 33        B3
  12. 48        B4
  13. 4        B5
  14. 19        B6
  15. 34        B7
  16. 49        B8
  17. 5        B9
  18. 20        C1
  19. 35        C2
  20. 50        C3
  21. 6        C4
  22. 21        C5
  23. 36        C6
  24. 51        C7
  25. 7        C8
  26. 22        C9
  27. 37        C10
  28. 52        D1
  29. 8        D2
  30. 23        D3
  31. 38        D4
  32. 53        D5
  33. 9        D6
  34. 24        D7
  35. 39        D8
  36. 54        D9
  37. 10        D10
  38. 25        D11
  39. 40        D12
  40. 55        D13
  41. 11        D14
  42. 26        E1
  43. 41        E2
  44. 56        E3
  45. 12        E4
  46. 27        E5
  47. 42        E6
  48. 57        E7
  49. 13        E8
  50. 28        E9
  51. 43        E10
  52. 58        E11
  53. 14        E12
  54. 29        E13
  55. 44        E14
  56. 59        E15
  57. 15        F1
  58. 30        F2
  59. 45        F3
  60. 60        F4
複製代碼
必須要是這個順序才能將原本在2位置的A2放到第2張的第一格(16)
而左邊的那列是輔助列,右邊的A1是資料列
需要對輔助列做重新排序,再將輔助列刪除,並將重排過後的資料丟進系統
  1. 1        A1
  2. 2        A5
  3. 3        B1
  4. 4        B5
  5. 5        B9
  6. 6        C4
  7. 7        C8
  8. 8        D2
  9. 9        D6
  10. 10        D10
  11. 11        D14
  12. 12        E4
  13. 13        E8
  14. 14        E12
  15. 15        F1
  16. 16        A2
  17. 17        A6
  18. 18        B2
  19. 19        B6
  20. 20        C1
  21. 21        C5
  22. 22        C9
  23. 23        D3
  24. 24        D7
  25. 25        D11
  26. 26        E1
  27. 27        E5
  28. 28        E9
  29. 29        E13
  30. 30        F2
  31. 31        A3
  32. 32        A7
  33. 33        B3
  34. 34        B7
  35. 35        C2
  36. 36        C6
  37. 37        C10
  38. 38        D4
  39. 39        D8
  40. 40        D12
  41. 41        E2
  42. 42        E6
  43. 43        E10
  44. 44        E14
  45. 45        F3
  46. 46        A4
  47. 47        A8
  48. 48        B4
  49. 49        B8
  50. 50        C3
  51. 51        C7
  52. 52        D1
  53. 53        D5
  54. 54        D9
  55. 55        D13
  56. 56        E3
  57. 57        E7
  58. 58        E11
  59. 59        E15
  60. 60        F4
複製代碼
印出來就會變成


表格排序(說明).rar (31.58 KB)
排序vba版(正確).rar (12.48 KB)
這裡還有附件的部分先全以橫向為基準
畢竟先前有過橫向正確的VBA,縱向的可能要我解釋夠清楚讓你理解之後才有辦法做

TOP

回復 19# wei9133


    超過15分鐘不給我改了...


總之真的不是要重新畫陣列,而是要重新計算資料列應該要在哪個位置
再將計算出來的資料當做輔助列重新排序並丟入系統

我畫陣列式因為我不畫出來我不知道怎麼重新排序才是對的位置Orz

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題