返回列表 上一主題 發帖

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

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

計算總數並重新排序

鑒於我上次講的不夠清楚,並且發了誤導方向的圖片,所以我重發了一個帖子
如有得罪各位還請見諒。

這東西看是要用一般公式或VBA都可以
一開始要先計算總列數
再來給予重新計算參數,此數可能是9、12、15
以15為基準的話,且總數為45的狀態下的話
先除以15並重新排列
將原本2的位置放到16,3放到31
因為45/15=3
所以4是放到2的位置,5放到17,6在32
7在3
出來的結果如下
  1. 1
  2. 4
  3. 7
  4. 10
  5. 13
  6. 16
  7. 19
  8. 22
  9. 25
  10. 28
  11. 31
  12. 34
  13. 37
  14. 40
  15. 43
  16. 2
  17. 5
  18. 8
  19. 11
  20. 14
  21. 17
  22. 20
  23. 23
  24. 26
  25. 29
  26. 32
  27. 35
  28. 38
  29. 41
  30. 44
  31. 3
  32. 6
  33. 9
  34. 12
  35. 15
  36. 18
  37. 21
  38. 24
  39. 27
  40. 30
  41. 33
  42. 36
  43. 39
  44. 42
  45. 45
複製代碼

數字為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
複製代碼

90的狀態
[code]
1
7
13
19
25
31
37
43
49
55
61
67
73
79
85
2
8
14
20
26
32
38
44
50
56
62
68
74
80
86
3
9
15
21
27
33
39
45
51
57
63
69
75
81
87
4
10
16
22
28
34
40
46
52
58
64
70
76
82
88
5
11
17
23
29
35
41
47
53
59
65
71
77
83
89
6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
[\code]


總數為255的狀態
[ocde]
1
18
35
52
69
86
103
120
137
154
171
188
205
222
239
2
19
36
53
70
87
104
121
138
155
172
189
206
223
240
3
20
37
54
71
88
105
122
139
156
173
190
207
224
241
4
21
38
55
72
89
106
123
140
157
174
191
208
225
242
5
22
39
56
73
90
107
124
141
158
175
192
209
226
243
6
23
40
57
74
91
108
125
142
159
176
193
210
227
244
7
24
41
58
75
92
109
126
143
160
177
194
211
228
245
8
25
42
59
76
93
110
127
144
161
178
195
212
229
246
9
26
43
60
77
94
111
128
145
162
179
196
213
230
247
10
27
44
61
78
95
112
129
146
163
180
197
214
231
248
11
28
45
62
79
96
113
130
147
164
181
198
215
232
249
12
29
46
63
80
97
114
131
148
165
182
199
216
233
250
13
30
47
64
81
98
115
132
149
166
183
200
217
234
251
14
31
48
65
82
99
116
133
150
167
184
201
218
235
252
15
32
49
66
83
100
117
134
151
168
185
202
219
236
253
16
33
50
67
84
101
118
135
152
169
186
203
220
237
254
17
34
51
68
85
102
119
136
153
170
187
204
221
238
255
[\code]

在此先感謝於上一帖中協助的 hcm19522 與 a5007185
若沒有a5007185提供的vba腳本,這帖裡的重新排序數自我應該要算很久...
感謝各位 m(_ _)m

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

TOP

回復 1# wei9133

哈,
如果按照你現在僅列出單行的方式,
你也可以參考看看這個~

排序.rar (15.63 KB)
  1. Option Explicit

  2. Sub PrintList()
  3.     Dim PT As Range
  4.     Dim i%, iM%, j%, jM%
  5.     Call Reset
  6.     iM = Range("C2")
  7.     jM = Range("C3")
  8.     Set PT = Range("E3")
  9.     For j = 1 To jM
  10.         For i = 1 To iM
  11.             PT = j + (i - 1) * jM
  12.             Set PT = PT.Offset(1)
  13.         Next
  14.     Next
  15.     Range("C4") = iM * jM
  16. End Sub

  17. Sub Reset()
  18.     Dim PT As Range
  19.     Set PT = Cells(Cells.Rows.Count, 5).End(xlUp)
  20.     If PT.Row = 2 Then Set PT = Range("E3")
  21.     Range("E3:E" & PT.Row).ClearContents
  22.     Range("C4").ClearContents
  23. End Sub
複製代碼

TOP

hcm19522 發表於 2018-7-29 10:37



    你好,參照你的部落格提供的公式結果出不來
我忘了先聲明我的版本為2003,是否因為這樣公式失效?



不過依照你所給的公式會產生循環參照
因為在原圖內
[attachimg]29105[/attachimg


原圖D2是總數,D6是基數
但你的第二句是
D2 下拉=IF(INT(F$2/F$6)+D1>F$2,INT(ROW(A2)/F$6)+1,INT(F$2/F$6)+D1)
這裡應該已經相衝突了

我換到另一個活頁簿中也不太對,還麻煩你看一下

出來的只有F的部分沒有報錯

然後,我真的丟進系統中發現我錯了
需要的公式好像不是這樣
450的狀態下我土法煉鋼的填入後應該要這樣
我的計算方式是
450/15=30
所以A1=1的狀況下
A2=1+15
A3=A2+15
一路到A29=A28+15
然後A30內放入2
A31=A30+15
A32=A31+15
詳情請看附件內的正確活頁簿

下面是450格我填完的結果
  1. 1
  2. 16
  3. 31
  4. 46
  5. 61
  6. 76
  7. 91
  8. 106
  9. 121
  10. 136
  11. 151
  12. 166
  13. 181
  14. 196
  15. 211
  16. 226
  17. 241
  18. 256
  19. 271
  20. 286
  21. 301
  22. 316
  23. 331
  24. 346
  25. 361
  26. 376
  27. 391
  28. 406
  29. 421
  30. 2
  31. 17
  32. 32
  33. 47
  34. 62
  35. 77
  36. 92
  37. 107
  38. 122
  39. 137
  40. 152
  41. 167
  42. 182
  43. 197
  44. 212
  45. 227
  46. 242
  47. 257
  48. 272
  49. 287
  50. 302
  51. 317
  52. 332
  53. 347
  54. 362
  55. 377
  56. 392
  57. 407
  58. 422
  59. 437
  60. 452
  61. 3
  62. 18
  63. 33
  64. 48
  65. 63
  66. 78
  67. 93
  68. 108
  69. 123
  70. 138
  71. 153
  72. 168
  73. 183
  74. 198
  75. 213
  76. 228
  77. 243
  78. 258
  79. 273
  80. 288
  81. 303
  82. 318
  83. 333
  84. 348
  85. 363
  86. 378
  87. 393
  88. 408
  89. 423
  90. 438
  91. 4
  92. 19
  93. 34
  94. 49
  95. 64
  96. 79
  97. 94
  98. 109
  99. 124
  100. 139
  101. 154
  102. 169
  103. 184
  104. 199
  105. 214
  106. 229
  107. 244
  108. 259
  109. 274
  110. 289
  111. 304
  112. 319
  113. 334
  114. 349
  115. 364
  116. 379
  117. 394
  118. 409
  119. 424
  120. 439
  121. 5
  122. 20
  123. 35
  124. 50
  125. 65
  126. 80
  127. 95
  128. 110
  129. 125
  130. 140
  131. 155
  132. 170
  133. 185
  134. 200
  135. 215
  136. 230
  137. 245
  138. 260
  139. 275
  140. 290
  141. 305
  142. 320
  143. 335
  144. 350
  145. 365
  146. 380
  147. 395
  148. 410
  149. 425
  150. 440
  151. 6
  152. 21
  153. 36
  154. 51
  155. 66
  156. 81
  157. 96
  158. 111
  159. 126
  160. 141
  161. 156
  162. 171
  163. 186
  164. 201
  165. 216
  166. 231
  167. 246
  168. 261
  169. 276
  170. 291
  171. 306
  172. 321
  173. 336
  174. 351
  175. 366
  176. 381
  177. 396
  178. 411
  179. 426
  180. 441
  181. 7
  182. 22
  183. 37
  184. 52
  185. 67
  186. 82
  187. 97
  188. 112
  189. 127
  190. 142
  191. 157
  192. 172
  193. 187
  194. 202
  195. 217
  196. 232
  197. 247
  198. 262
  199. 277
  200. 292
  201. 307
  202. 322
  203. 337
  204. 352
  205. 367
  206. 382
  207. 397
  208. 412
  209. 427
  210. 442
  211. 8
  212. 23
  213. 38
  214. 53
  215. 68
  216. 83
  217. 98
  218. 113
  219. 128
  220. 143
  221. 158
  222. 173
  223. 188
  224. 203
  225. 218
  226. 233
  227. 248
  228. 263
  229. 278
  230. 293
  231. 308
  232. 323
  233. 338
  234. 353
  235. 368
  236. 383
  237. 398
  238. 413
  239. 428
  240. 443
  241. 9
  242. 24
  243. 39
  244. 54
  245. 69
  246. 84
  247. 99
  248. 114
  249. 129
  250. 144
  251. 159
  252. 174
  253. 189
  254. 204
  255. 219
  256. 234
  257. 249
  258. 264
  259. 279
  260. 294
  261. 309
  262. 324
  263. 339
  264. 354
  265. 369
  266. 384
  267. 399
  268. 414
  269. 429
  270. 444
  271. 10
  272. 25
  273. 40
  274. 55
  275. 70
  276. 85
  277. 100
  278. 115
  279. 130
  280. 145
  281. 160
  282. 175
  283. 190
  284. 205
  285. 220
  286. 235
  287. 250
  288. 265
  289. 280
  290. 295
  291. 310
  292. 325
  293. 340
  294. 355
  295. 370
  296. 385
  297. 400
  298. 415
  299. 430
  300. 445
  301. 11
  302. 26
  303. 41
  304. 56
  305. 71
  306. 86
  307. 101
  308. 116
  309. 131
  310. 146
  311. 161
  312. 176
  313. 191
  314. 206
  315. 221
  316. 236
  317. 251
  318. 266
  319. 281
  320. 296
  321. 311
  322. 326
  323. 341
  324. 356
  325. 371
  326. 386
  327. 401
  328. 416
  329. 431
  330. 446
  331. 12
  332. 27
  333. 42
  334. 57
  335. 72
  336. 87
  337. 102
  338. 117
  339. 132
  340. 147
  341. 162
  342. 177
  343. 192
  344. 207
  345. 222
  346. 237
  347. 252
  348. 267
  349. 282
  350. 297
  351. 312
  352. 327
  353. 342
  354. 357
  355. 372
  356. 387
  357. 402
  358. 417
  359. 432
  360. 447
  361. 13
  362. 28
  363. 43
  364. 58
  365. 73
  366. 88
  367. 103
  368. 118
  369. 133
  370. 148
  371. 163
  372. 178
  373. 193
  374. 208
  375. 223
  376. 238
  377. 253
  378. 268
  379. 283
  380. 298
  381. 313
  382. 328
  383. 343
  384. 358
  385. 373
  386. 388
  387. 403
  388. 418
  389. 433
  390. 448
  391. 14
  392. 29
  393. 44
  394. 59
  395. 74
  396. 89
  397. 104
  398. 119
  399. 134
  400. 149
  401. 164
  402. 179
  403. 194
  404. 209
  405. 224
  406. 239
  407. 254
  408. 269
  409. 284
  410. 299
  411. 314
  412. 329
  413. 344
  414. 359
  415. 374
  416. 389
  417. 404
  418. 419
  419. 434
  420. 449
  421. 15
  422. 30
  423. 45
  424. 60
  425. 75
  426. 90
  427. 105
  428. 120
  429. 135
  430. 150
  431. 165
  432. 180
  433. 195
  434. 210
  435. 225
  436. 240
  437. 255
  438. 270
  439. 285
  440. 300
  441. 315
  442. 330
  443. 345
  444. 360
  445. 375
  446. 390
  447. 405
  448. 420
  449. 435
  450. 450
複製代碼
至於為甚麼A30是2我也不是很清楚
然後雖然出來結果應該大致上是對了,但還是有跳號發生
不過應該是因為實際應該是415,結果我用450去硬套的結果

然後可以的話麻煩下拉的起始點用1,這樣我貼過去比較方便
m(_ _)m

循環1.png (46.22 KB)

循環1.png

TOP

排序.rar (30.38 KB) 回復 4# wei9133


   
函數如果改成這樣呢?
有符合你的需求嗎?
還是你必須要由另一個數列進行置換?

TOP

回復  wei9133

哈,
如果按照你現在僅列出單行的方式,
你也可以參考看看這個~
a5007185 發表於 2018-7-29 11:34


你好,vba的部分因為公司用的是2003,所以開啟會有問題


直接用Alt+F11去啟動倒是可以的
p.s.我一開始都傻傻去改總數,結果出來的值永遠是255...
我要的是我填總數(變數)跟參數(參數一般都是15),然後他除倍數出來計算(直接無條件進位為參數整除的值)
ex.428/15=28.53就用29下去算
15*29=435 用435下去排序
(理論上429~435都是空值,而且護集中在第15落那個集落中)

不過我今天因為試不出來,所以用土法煉鋼的方式弄了排序
  1. 1
  2. 16
  3. 31
  4. 46
  5. 61
  6. 76
  7. 91
  8. 106
  9. 121
  10. 136
  11. 151
  12. 166
  13. 181
  14. 196
  15. 211
  16. 226
  17. 241
  18. 256
  19. 271
  20. 286
  21. 301
  22. 316
  23. 331
  24. 346
  25. 361
  26. 376
  27. 391
  28. 406
  29. 421
  30. 2
  31. 17
  32. 32
  33. 47
  34. 62
  35. 77
  36. 92
  37. 107
  38. 122
  39. 137
  40. 152
  41. 167
  42. 182
  43. 197
  44. 212
  45. 227
  46. 242
  47. 257
  48. 272
  49. 287
  50. 302
  51. 317
  52. 332
  53. 347
  54. 362
  55. 377
  56. 392
  57. 407
  58. 422
  59. 437
  60. 452
  61. 3
  62. 18
  63. 33
  64. 48
  65. 63
  66. 78
  67. 93
  68. 108
  69. 123
  70. 138
  71. 153
  72. 168
  73. 183
  74. 198
  75. 213
  76. 228
  77. 243
  78. 258
  79. 273
  80. 288
  81. 303
  82. 318
  83. 333
  84. 348
  85. 363
  86. 378
  87. 393
  88. 408
  89. 423
  90. 438
  91. 4
  92. 19
  93. 34
  94. 49
  95. 64
  96. 79
  97. 94
  98. 109
  99. 124
  100. 139
  101. 154
  102. 169
  103. 184
  104. 199
  105. 214
  106. 229
  107. 244
  108. 259
  109. 274
  110. 289
  111. 304
  112. 319
  113. 334
  114. 349
  115. 364
  116. 379
  117. 394
  118. 409
  119. 424
  120. 439
  121. 5
  122. 20
  123. 35
  124. 50
  125. 65
  126. 80
  127. 95
  128. 110
  129. 125
  130. 140
  131. 155
  132. 170
  133. 185
  134. 200
  135. 215
  136. 230
  137. 245
  138. 260
  139. 275
  140. 290
  141. 305
  142. 320
  143. 335
  144. 350
  145. 365
  146. 380
  147. 395
  148. 410
  149. 425
  150. 440
  151. 6
  152. 21
  153. 36
  154. 51
  155. 66
  156. 81
  157. 96
  158. 111
  159. 126
  160. 141
  161. 156
  162. 171
  163. 186
  164. 201
  165. 216
  166. 231
  167. 246
  168. 261
  169. 276
  170. 291
  171. 306
  172. 321
  173. 336
  174. 351
  175. 366
  176. 381
  177. 396
  178. 411
  179. 426
  180. 441
  181. 7
  182. 22
  183. 37
  184. 52
  185. 67
  186. 82
  187. 97
  188. 112
  189. 127
  190. 142
  191. 157
  192. 172
  193. 187
  194. 202
  195. 217
  196. 232
  197. 247
  198. 262
  199. 277
  200. 292
  201. 307
  202. 322
  203. 337
  204. 352
  205. 367
  206. 382
  207. 397
  208. 412
  209. 427
  210. 442
  211. 8
  212. 23
  213. 38
  214. 53
  215. 68
  216. 83
  217. 98
  218. 113
  219. 128
  220. 143
  221. 158
  222. 173
  223. 188
  224. 203
  225. 218
  226. 233
  227. 248
  228. 263
  229. 278
  230. 293
  231. 308
  232. 323
  233. 338
  234. 353
  235. 368
  236. 383
  237. 398
  238. 413
  239. 428
  240. 443
  241. 9
  242. 24
  243. 39
  244. 54
  245. 69
  246. 84
  247. 99
  248. 114
  249. 129
  250. 144
  251. 159
  252. 174
  253. 189
  254. 204
  255. 219
  256. 234
  257. 249
  258. 264
  259. 279
  260. 294
  261. 309
  262. 324
  263. 339
  264. 354
  265. 369
  266. 384
  267. 399
  268. 414
  269. 429
  270. 444
  271. 10
  272. 25
  273. 40
  274. 55
  275. 70
  276. 85
  277. 100
  278. 115
  279. 130
  280. 145
  281. 160
  282. 175
  283. 190
  284. 205
  285. 220
  286. 235
  287. 250
  288. 265
  289. 280
  290. 295
  291. 310
  292. 325
  293. 340
  294. 355
  295. 370
  296. 385
  297. 400
  298. 415
  299. 430
  300. 445
  301. 11
  302. 26
  303. 41
  304. 56
  305. 71
  306. 86
  307. 101
  308. 116
  309. 131
  310. 146
  311. 161
  312. 176
  313. 191
  314. 206
  315. 221
  316. 236
  317. 251
  318. 266
  319. 281
  320. 296
  321. 311
  322. 326
  323. 341
  324. 356
  325. 371
  326. 386
  327. 401
  328. 416
  329. 431
  330. 446
  331. 12
  332. 27
  333. 42
  334. 57
  335. 72
  336. 87
  337. 102
  338. 117
  339. 132
  340. 147
  341. 162
  342. 177
  343. 192
  344. 207
  345. 222
  346. 237
  347. 252
  348. 267
  349. 282
  350. 297
  351. 312
  352. 327
  353. 342
  354. 357
  355. 372
  356. 387
  357. 402
  358. 417
  359. 432
  360. 447
  361. 13
  362. 28
  363. 43
  364. 58
  365. 73
  366. 88
  367. 103
  368. 118
  369. 133
  370. 148
  371. 163
  372. 178
  373. 193
  374. 208
  375. 223
  376. 238
  377. 253
  378. 268
  379. 283
  380. 298
  381. 313
  382. 328
  383. 343
  384. 358
  385. 373
  386. 388
  387. 403
  388. 418
  389. 433
  390. 448
  391. 14
  392. 29
  393. 44
  394. 59
  395. 74
  396. 89
  397. 104
  398. 119
  399. 134
  400. 149
  401. 164
  402. 179
  403. 194
  404. 209
  405. 224
  406. 239
  407. 254
  408. 269
  409. 284
  410. 299
  411. 314
  412. 329
  413. 344
  414. 359
  415. 374
  416. 389
  417. 404
  418. 419
  419. 434
  420. 449
  421. 15
  422. 30
  423. 45
  424. 60
  425. 75
  426. 90
  427. 105
  428. 120
  429. 135
  430. 150
  431. 165
  432. 180
  433. 195
  434. 210
  435. 225
  436. 240
  437. 255
  438. 270
  439. 285
  440. 300
  441. 315
  442. 330
  443. 345
  444. 360
  445. 375
  446. 390
  447. 405
  448. 420
  449. 435
  450. 450
複製代碼
出來的結果跟VBA算出來的不一樣

450的狀態下我土法煉鋼的填入後應該要這樣
我的計算方式是
450/15=30
所以A1=1的狀況下
A2=1+15
A3=A2+15
一路到A29=A28+15
然後A30內放入2
A31=A30+15
A32=A31+15
詳情請看附件內的正確活頁簿

至於為甚麼A30是2我也不是很清楚
然後雖然出來結果應該大致上是對了,但還是有跳號發生
不過應該是因為實際應該是415,結果我用450去硬套的結果

結果到底哪邊才是對的我也搞不清楚,必須用相符的數字丟入系統印出來我才知道...
上面那個415格應該要用420格去排序再丟入系統,這樣印出來的我才能確認
我用450去套的有跳位置的有空格,我也不知道到底對不對,不過整體順序是大致對的

然後可以的話麻煩算出的起始點用第一格,這樣我貼過去比較方便 (整列複製,插入貼上)
m(_ _)m

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

TOP

本帖最後由 a5007185 於 2018-8-1 23:22 編輯

想釐清一個問題,
如果總數是428,
則理論上429~435都是空值,
而且會集中在第15落那個集落中。

依據你提出的條件,
應該是第8至15的集合各缺少一個元素吧?
因為你排列是十五個集合分開分配的。

另外如果需要連整列複製這個都做起來是可行的。

TOP

回復 6# wei9133

我想我一開始應該給錯條件了...
經過驗正,我今天土法煉鋼的東西才比較接近的樣子






正確排序結果.rar (10.56 KB)

TOP

回復 6# wei9133


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

我調整好兩個版本給你參考,
一個是用函數的方式,(公式套用到第4000不夠可以自己繼續拉)
另一個是用VBA的方式。

排序.rar (49.15 KB)

TOP

回復  wei9133


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

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


你好,感謝你的回覆
這兩個版本我找時間試看看,目前看起來應該是正確的
不過要實際做測試印出來才知道是否正確
在次感謝你的幫助

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題