Board logo

標題: [發問] 計算總數並重新排序 [打印本頁]

作者: wei9133    時間: 2018-7-29 02:02     標題: 計算總數並重新排序

計算總數並重新排序

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

這東西看是要用一般公式或VBA都可以
一開始要先計算總列數
再來給予重新計算參數,此數可能是9、12、15
以15為基準的話,且總數為45的狀態下的話
先除以15並重新排列
將原本2的位置放到16,3放到31
因為45/15=3
所以4是放到2的位置,5放到17,6在32
7在3
出來的結果如下
[attach]29080[/attach]
  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
複製代碼
[attach]29079[/attach]
數字為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
複製代碼
[attach]29078[/attach]
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]

[attach]29081[/attach]
總數為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
作者: hcm19522    時間: 2018-7-29 10:37

http://blog.xuite.net/hcm19522/twblog/585085986
作者: a5007185    時間: 2018-7-29 11:34

回復 1# wei9133

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

[attach]29085[/attach]
  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
複製代碼

作者: wei9133    時間: 2018-8-1 22:46

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



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

[attach]29104[/attach]

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

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

我換到另一個活頁簿中也不太對,還麻煩你看一下
[attach]29107[/attach]
出來的只有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
作者: a5007185    時間: 2018-8-1 23:05

[attach]29109[/attach]回復 4# wei9133


    [attach]29109[/attach]
函數如果改成這樣呢?
有符合你的需求嗎?
還是你必須要由另一個數列進行置換?
作者: wei9133    時間: 2018-8-1 23:09

回復  wei9133

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


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

直接用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

[attach]29110[/attach]
作者: a5007185    時間: 2018-8-1 23:20

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

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

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

另外如果需要連整列複製這個都做起來是可行的。
作者: wei9133    時間: 2018-8-1 23:35

回復 6# wei9133

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

[attach]29113[/attach]

[attach]29114[/attach]

[attach]29115[/attach]
作者: a5007185    時間: 2018-8-1 23:44

回復 6# wei9133


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

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

[attach]29116[/attach]
作者: wei9133    時間: 2018-8-2 01:29

回復  wei9133


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

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


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

回復 4# wei9133
作者: ML089    時間: 2018-8-2 17:07

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

總數及基準數 可以自行定義名稱或改為儲存格名稱
作者: wei9133    時間: 2018-8-4 02:01

回復  wei9133


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

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


你好,昨天測試了一下應該是無誤了
非常感謝你
實際上在撕的時候發現還有可以改進的地方
(這個是我一開始沒想到的部分,並不是你提供的東西有誤)
鑒於你大概懂我的需求是甚麼了,所以我簡單的用圖表示一下
(我連上面你解決的原理都不懂,所以也可能說不太清楚)
你先參考一下我的附件
[attach]29135[/attach]
[attach]29134[/attach]
麻煩一樣要直的結果,可能的話幫我把算出來的陣列放在後方
目前的東西一定是3*3 3*4 3*5 如果畫陣列麻煩就不用畫了
有直的結果就萬分感激了

[attach]29133[/attach]
至於實際成果我要丟進系統印出來才知道對不對
m(_ _)m
作者: a5007185    時間: 2018-8-5 00:13

回復 13# wei9133

弄好囉

[attach]29140[/attach]
作者: wei9133    時間: 2018-8-7 01:56

回復  wei9133

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



    感謝你,目前看右方陣列應該是我要的東西了
   待找天有空的時候測試,萬分感謝 m(_ _)m
作者: wei9133    時間: 2018-8-7 02:59

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

先前正確的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橫向版本
[attach]29147[/attach]
  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依次丟入
長下圖這樣
[attach]29148[/attach]
  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
複製代碼
[attach]29149[/attach]
[attach]29150[/attach]

附件為你原本提供的vba版本
[attach]29146[/attach]
原本在2順位的要擺到16去才會在第二張的第一格
所以這次的版本好像是錯的
至於縱向的部分,我先整理一下,等會po上來
作者: wei9133    時間: 2018-8-7 03:50

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

縱向的部分應該長這樣
[attach]29152[/attach]
[attach]29153[/attach]

不明白的部分可以看附件
我大概排了一下,應該是這樣子沒錯
你的陣列格子是對的,但結果跟我畫出來的不一樣
應該是因為我沒有提到系統是固定順序吃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
複製代碼
[attach]29151[/attach]

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

回復 17# wei9133

再不行,我們私下喬
    [attach]29158[/attach]
作者: wei9133    時間: 2018-8-8 01:16

本帖最後由 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)
請看下圖
[attach]29161[/attach]
[attach]29162[/attach]

東西丟進系統
它的順序是
第一張紙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
複製代碼
印出來就會變成
[attach]29165[/attach]

[attach]29163[/attach]
[attach]29164[/attach]
這裡還有附件的部分先全以橫向為基準
畢竟先前有過橫向正確的VBA,縱向的可能要我解釋夠清楚讓你理解之後才有辦法做
作者: wei9133    時間: 2018-8-8 01:34

回復 19# wei9133


    超過15分鐘不給我改了...
[attach]29166[/attach]

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

我畫陣列式因為我不畫出來我不知道怎麼重新排序才是對的位置Orz
作者: a5007185    時間: 2018-8-8 13:44

我只能說當文字說明已經無法構成有效溝通的時候,
請嘗試其他表示需求的方法,e.g,電話或整個操作過程截圖

我一直到現在才知道我列出來的數字只是個引子,
如果你有注意我的結果中第九行的資料是33,
剛好對應你第三十三行的資料是9,
請盡可能地以文字外的語言輔助說明,
要不然這樣花了這麼多時間我現在才搞懂你的需求,
我覺得這樣對雙方都很費時。

我有空我會再調整表格,
若之後再有問題,
請麻煩你私訊我你的Line。
作者: a5007185    時間: 2018-8-8 15:00

回復 19# wei9133

若陣列的中數字即表示你欲填進資料的順序,
則A欄會計算陣列中由左至右、由上至下的相對應序列,
將資料按順序填入B欄,
再按下「排序」即可獲得按以上規律產生的資料順序。
[attach]29170[/attach]
若還有什麼意外,
再麻煩你私訊我你的Line,
我們電話上討論。
作者: wei9133    時間: 2018-8-9 01:36

回復  wei9133

若陣列的中數字即表示你欲填進資料的順序,
則A欄會計算陣列中由左至右、由上至下的相對 ...
a5007185 發表於 2018-8-8 15:00



    你好,真的萬分抱歉我先前講的不夠清楚明白
目前看起來已經正確了 (我用轉置貼上看過結果應該無誤)
效果如下圖
[attach]29179[/attach]
另外因為excel版本的不同,有一點小問題,但不影響使用
(公司只有office2003,所已在家測試也是用2003)
第一點為
[attach]29180[/attach]
縱向優先與橫向優先字樣有重疊到字
第二點為排序部分無法使用
[attach]29181[/attach]
此點沒有也沒關係,誠如你說這些數字是排序用的引子
實際上我要放到另外一個檔案中當輔助列,並不會在這個檔案中排序

這些部分不修正,其實也不會影響使用
在此向你致上十二萬分的謝意

p.s.
我有另外發短信息給你,我有另外別的部分想請教你
還請撥冗協助
感謝 m(_ _)m
作者: 准提部林    時間: 2018-8-10 10:15

回復 22# a5007185


這檔案做得很完整好用, GOOD+++
作者: 准提部林    時間: 2018-8-10 10:17

回復 23# wei9133


排序, 可以用錄製取得
選項按鈕, 可試著自行重新建立

接觸VBA, 這些都免不了要用到
作者: a5007185    時間: 2018-8-10 17:09

回復 23# wei9133


   我已經加你了
作者: a5007185    時間: 2018-8-10 17:11

回復 24# 准提部林

謝謝大大肯定!

過去有使用過你的金千里會計帳,
當時幫助很大,謝謝!
作者: wei9133    時間: 2018-8-10 23:30

回復  wei9133


排序, 可以用錄製取得
選項按鈕, 可試著自行重新建立

接觸VBA, 這些都免不了要用 ...
准提部林 發表於 2018-8-10 10:17

[attach]29187[/attach]
[attach]29188[/attach]
我光看程式碼那邊的快沒看到哪裡有寫按鈕的...
後來才發現直接在按鍵那按右鍵就可以移走了...
不過第二個的物件不支援此屬性或方法我就無法解決了
好在計算功能是正常的就可以了。
感謝提點...


   
回復  wei9133


   我已經加你了
a5007185 發表於 2018-8-10 17:09



    我看到了,感謝你
待我整理一下要問的問題再行詢問
m(_ _)m
作者: a5007185    時間: 2018-8-11 00:27

回復 28# wei9133


1.關於選項按鈕的設置:
請點選右鍵 >> 控制項格式 >> 控制 >> 儲存格連結 >> $D$6
[attach]29189[/attach][attach]29190[/attach]
[attach]29191[/attach][attach]29192[/attach]
2.關於指令按鈕 執行/排列
[attach]29193[/attach][attach]29194[/attach]
作者: wei9133    時間: 2018-8-11 01:46

回復  wei9133


1.關於選項按鈕的設置:
請點選右鍵 >> 控制項格式 >> 控制 >> 儲存格連結 >> $D$6
...
a5007185 發表於 2018-8-11 00:27



    你好,東西用轉存成2003後2013開啟是正常的
打開來看路徑也是對的,只是.xlsm改成了.xls
[attach]29195[/attach]
[attach]29196[/attach]

可能是該指令在2003版本中不存在吧?
不過這沒甚麼大礙的,能夠記算順序就很優秀易用了
感謝你再次抽空回覆
m(_ _)m




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)