Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Получение массива ячеек для объединения

Ответить
Настройки темы
.NET - [решено] Получение массива ячеек для объединения

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Чего то голова не варит уже...
Имеем экземпляр MS Excel.
Открыли его, все работает(C#, WinForm).
После некоторых операций получаю на выходе некий набор записей, который необходимо выгрузить в Excel.
Так вот там есть строки, которые необходимо вставить отдельно на строку и выполнить слияние ячеек по горизонтали. Проблема в том, что количество столбцов для слияния известно, но я не нашел, как это количество подсунуть в функцию get_range объекта Excel._WorkSheet.
Можно сделать так:
Код: Выделить весь код
//Делаем жирным заголовок
oSheet.get_Range("C2", "C2").Rows.EntireRow.Font.Bold= true;
В данном случае выделяется вся строка "С", и делается жирным текст.

А если мне необходимо выделить 5 ячеек, то я могу написать так:
Код: Выделить весь код
oSheet.get_Range("A1", "F1").Merge(false);
Т.е. если я заранее знаю, что последним нужным столбцом будет F, то могу прописать прямо в коде. А мне необходимо сделать так, чтобы имя столбца формировалось как то автоматом и туда могло подставиться и AB и KG.

Есть какие нибудь идеи, как можно обмануть get_range в C# ?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 09:54, 15-07-2009

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


пример из хелпа:
Код: Выделить весь код
Range("A1:H8").Formula = "=rand()"	'Range is on the active sheet
...
If you use a text argument for the range address, you must specify the address in A1-style notation (you cannot use R1C1-style notation).
нужно 2 раза перевести десятичную строку в 26-чную
соответсвенно:
Код: Выделить весь код
string str;
for(int a=my_str_number; 0<a; a/=26, str=string('A' + (a%26))+str) {}

ohSheet.get_Range("A1:F1").Merge(false);

Последний раз редактировалось pva, 16-07-2009 в 07:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:30, 16-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Я выкрутился немного другим способом, но зато теперь могу не указывать буквы, а просто номера ячеек (строка, столбец):
Код: Выделить весь код
 oSheet.get_Range(oSheet.Cells[RowIndex, ColumnIndex], oSheet.Cells[RowIndex2, ColumnIndex2]).Merge(false);
Спасибо за помощь

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:03, 16-07-2009 | #3


Новый участник


Сообщения: 21
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата pva:
нужно 2 раза перевести десятичную строку в 26-чную
соответсвенно:
Код:
string str;
for(int a=my_str_number; 0<a; a/=26, str=string('A' + (a%26))+str) {}
ohSheet.get_Range("A1:F1").Merge(false); »
Неправильно.

Ты предполагаешь, что нумерация столбцов в экселе является числовой по основанию 26 с цифрами
ABC....Z. Это не так. В любой системе счисления есть цифра 0, ведущие нули игнорируются. А в excel столбцы A, AA, AAA - совершенно разные столбцы... Получается, что система счисления по основанию 27, но нули в ней не используются.

Изящного алгоритма для перевода номера столбца в буквенное представление я придумать не смог...
Код: Выделить весь код
  sub rc2a1($){
    my $j = shift;
    return chr($j+64) if ($j<27);
    return chr (int (($j-1)/26)+64).chr(($j-1) % 26 + 65) if ($j<703);
    return chr (int (($j-703)/676)+65).rc2a1(($j-703) % 676+27);
  }
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 24-07-2009 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


sergvg, Согласен конечно что не совсем 26-чная, но и не 27 вот код, ИМХО изящней (потому что цикл):
Код: Выделить весь код
string rc2a1(int my_str_number)
{
   // если "A" = 1, то надо:
   // --my_str_number;

   string str;
   int a=my_str_number;
   for(; 26<a; a/=26, str=string('A' + (a%26))+str) {}
   return string('A' - 1 + a)+str;
}

Отправлено: 07:15, 27-07-2009 | #5


Новый участник


Сообщения: 21
Благодарности: 5

Профиль | Отправить PM | Цитировать


pva, Ты тестируешь свой код ? Первая колонка - число, вторая - результат моей ф-и, третья - твоей...

Код: Выделить весь код
1 A  A
2 B  B
3 C  C
4 D  D
5 E  E
6 F  F
7 G  G
8 H  H
9 I  I
10 J  J
11 K  K
12 L  L
13 M  M
14 N  N
15 O  O
16 P  P
17 Q  Q
18 R  R
19 S  S
20 T  T
21 U  U
22 V  V
23 W  W
24 X  X
25 Y  Y
26 Z  Z
27 AA  AB
28 AB  AB
29 AC  AB
30 AD  AB
31 AE  AB
32 AF  AB
33 AG  AB
34 AH  AB
35 AI  AB
36 AJ  AB
37 AK  AB
38 AL  AB
39 AM  AB
40 AN  AB
41 AO  AB
42 AP  AB
43 AQ  AB
44 AR  AB
45 AS  AB
46 AT  AB
47 AU  AB
48 AV  AB
49 AW  AB
50 AX  AB
51 AY  AB
52 AZ  BC
53 BA  BC
54 BB  BC
55 BC  BC
56 BD  BC
57 BE  BC
58 BF  BC
59 BG  BC
60 BH  BC
61 BI  BC
62 BJ  BC
63 BK  BC
64 BL  BC
65 BM  BC
66 BN  BC
67 BO  BC
68 BP  BC
69 BQ  BC
70 BR  BC
71 BS  BC
72 BT  BC
73 BU  BC
74 BV  BC
75 BW  BC
76 BX  BC
77 BY  BC
78 BZ  CD
79 CA  CD
80 CB  CD
81 CC  CD
82 CD  CD
83 CE  CD
84 CF  CD
85 CG  CD
86 CH  CD
87 CI  CD
88 CJ  CD
89 CK  CD
90 CL  CD
91 CM  CD
92 CN  CD
93 CO  CD
94 CP  CD
95 CQ  CD
96 CR  CD
97 CS  CD
98 CT  CD
99 CU  CD
100 CV  CD
101 CW  CD
102 CX  CD
103 CY  CD
104 CZ  DE
105 DA  DE
106 DB  DE
107 DC  DE
108 DD  DE
109 DE  DE
110 DF  DE
111 DG  DE
112 DH  DE
113 DI  DE
114 DJ  DE
115 DK  DE
116 DL  DE
117 DM  DE
118 DN  DE
119 DO  DE
120 DP  DE
121 DQ  DE
122 DR  DE
123 DS  DE
124 DT  DE
125 DU  DE
126 DV  DE
127 DW  DE
128 DX  DE
129 DY  DE
130 DZ  EF
131 EA  EF
132 EB  EF
133 EC  EF
134 ED  EF
135 EE  EF
136 EF  EF
137 EG  EF
138 EH  EF
139 EI  EF
140 EJ  EF
141 EK  EF
142 EL  EF
143 EM  EF
144 EN  EF
145 EO  EF
146 EP  EF
147 EQ  EF
148 ER  EF
149 ES  EF
150 ET  EF
151 EU  EF
152 EV  EF
153 EW  EF
154 EX  EF
155 EY  EF
156 EZ  FG
157 FA  FG
158 FB  FG
159 FC  FG
160 FD  FG
161 FE  FG
162 FF  FG
163 FG  FG
164 FH  FG
165 FI  FG
166 FJ  FG
167 FK  FG
168 FL  FG
169 FM  FG
170 FN  FG
171 FO  FG
172 FP  FG
173 FQ  FG
174 FR  FG
175 FS  FG
176 FT  FG
177 FU  FG
178 FV  FG
179 FW  FG
180 FX  FG
181 FY  FG
182 FZ  GH
183 GA  GH
184 GB  GH
185 GC  GH
186 GD  GH
187 GE  GH
188 GF  GH
189 GG  GH
190 GH  GH
191 GI  GH
192 GJ  GH
193 GK  GH
194 GL  GH
195 GM  GH
196 GN  GH
197 GO  GH
198 GP  GH
199 GQ  GH
200 GR  GH
201 GS  GH
202 GT  GH
203 GU  GH
204 GV  GH
205 GW  GH
206 GX  GH
207 GY  GH
208 GZ  HI
209 HA  HI
210 HB  HI
211 HC  HI
212 HD  HI
213 HE  HI
214 HF  HI
215 HG  HI
216 HH  HI
217 HI  HI
218 HJ  HI
219 HK  HI
220 HL  HI
221 HM  HI
222 HN  HI
223 HO  HI
224 HP  HI
225 HQ  HI
226 HR  HI
227 HS  HI
228 HT  HI
229 HU  HI
230 HV  HI
231 HW  HI
232 HX  HI
233 HY  HI
234 HZ  IJ
235 IA  IJ
236 IB  IJ
237 IC  IJ
238 ID  IJ
239 IE  IJ
240 IF  IJ
241 IG  IJ
242 IH  IJ
243 II  IJ
244 IJ  IJ
245 IK  IJ
246 IL  IJ
247 IM  IJ
248 IN  IJ
249 IO  IJ
250 IP  IJ
251 IQ  IJ
252 IR  IJ
253 IS  IJ
254 IT  IJ
255 IU  IJ
256 IV  IJ
257 IW  IJ
258 IX  IJ
259 IY  IJ
260 IZ  JK
261 JA  JK
262 JB  JK
263 JC  JK
264 JD  JK
265 JE  JK
266 JF  JK
267 JG  JK
268 JH  JK
269 JI  JK
270 JJ  JK
271 JK  JK
272 JL  JK
273 JM  JK
274 JN  JK
275 JO  JK
276 JP  JK
277 JQ  JK
278 JR  JK
279 JS  JK
280 JT  JK
281 JU  JK
282 JV  JK
283 JW  JK
284 JX  JK
285 JY  JK
286 JZ  KL
287 KA  KL
288 KB  KL
289 KC  KL
290 KD  KL
291 KE  KL
292 KF  KL
293 KG  KL
294 KH  KL
295 KI  KL
296 KJ  KL
297 KK  KL
298 KL  KL
299 KM  KL
300 KN  KL
301 KO  KL
302 KP  KL
303 KQ  KL
304 KR  KL
305 KS  KL
306 KT  KL
307 KU  KL
308 KV  KL
309 KW  KL
310 KX  KL
311 KY  KL
312 KZ  LM
313 LA  LM
314 LB  LM
315 LC  LM
316 LD  LM
317 LE  LM
318 LF  LM
319 LG  LM
320 LH  LM
321 LI  LM
322 LJ  LM
323 LK  LM
324 LL  LM
325 LM  LM
326 LN  LM
327 LO  LM
328 LP  LM
329 LQ  LM
330 LR  LM
331 LS  LM
332 LT  LM
333 LU  LM
334 LV  LM
335 LW  LM
336 LX  LM
337 LY  LM
338 LZ  MN
339 MA  MN
340 MB  MN
341 MC  MN
342 MD  MN
343 ME  MN
344 MF  MN
345 MG  MN
346 MH  MN
347 MI  MN
348 MJ  MN
349 MK  MN
350 ML  MN
351 MM  MN
352 MN  MN
353 MO  MN
354 MP  MN
355 MQ  MN
356 MR  MN
357 MS  MN
358 MT  MN
359 MU  MN
360 MV  MN
361 MW  MN
362 MX  MN
363 MY  MN
364 MZ  NO
365 NA  NO
366 NB  NO
367 NC  NO
368 ND  NO
369 NE  NO
370 NF  NO
371 NG  NO
372 NH  NO
373 NI  NO
374 NJ  NO
375 NK  NO
376 NL  NO
377 NM  NO
378 NN  NO
379 NO  NO
380 NP  NO
381 NQ  NO
382 NR  NO
383 NS  NO
384 NT  NO
385 NU  NO
386 NV  NO
387 NW  NO
388 NX  NO
389 NY  NO
390 NZ  OP
391 OA  OP
392 OB  OP
393 OC  OP
394 OD  OP
395 OE  OP
396 OF  OP
397 OG  OP
398 OH  OP
399 OI  OP
400 OJ  OP
401 OK  OP
402 OL  OP
403 OM  OP
404 ON  OP
405 OO  OP
406 OP  OP
407 OQ  OP
408 OR  OP
409 OS  OP
410 OT  OP
411 OU  OP
412 OV  OP
413 OW  OP
414 OX  OP
415 OY  OP
416 OZ  PQ
417 PA  PQ
418 PB  PQ
419 PC  PQ
420 PD  PQ
421 PE  PQ
422 PF  PQ
423 PG  PQ
424 PH  PQ
425 PI  PQ
426 PJ  PQ
427 PK  PQ
428 PL  PQ
429 PM  PQ
430 PN  PQ
431 PO  PQ
432 PP  PQ
433 PQ  PQ
434 PR  PQ
435 PS  PQ
436 PT  PQ
437 PU  PQ
438 PV  PQ
439 PW  PQ
440 PX  PQ
441 PY  PQ
442 PZ  QR
443 QA  QR
444 QB  QR
445 QC  QR
446 QD  QR
447 QE  QR
448 QF  QR
449 QG  QR
450 QH  QR
451 QI  QR
452 QJ  QR
453 QK  QR
454 QL  QR
455 QM  QR
456 QN  QR
457 QO  QR
458 QP  QR
459 QQ  QR
460 QR  QR
461 QS  QR
462 QT  QR
463 QU  QR
464 QV  QR
465 QW  QR
466 QX  QR
467 QY  QR
468 QZ  RS
469 RA  RS
470 RB  RS
471 RC  RS
472 RD  RS
473 RE  RS
474 RF  RS
475 RG  RS
476 RH  RS
477 RI  RS
478 RJ  RS
479 RK  RS
480 RL  RS
481 RM  RS
482 RN  RS
483 RO  RS
484 RP  RS
485 RQ  RS
486 RR  RS
487 RS  RS
488 RT  RS
489 RU  RS
490 RV  RS
491 RW  RS
492 RX  RS
493 RY  RS
494 RZ  ST
495 SA  ST
496 SB  ST
497 SC  ST
498 SD  ST
499 SE  ST
500 SF  ST
501 SG  ST
502 SH  ST
503 SI  ST
504 SJ  ST
505 SK  ST
506 SL  ST
507 SM  ST
508 SN  ST
509 SO  ST
510 SP  ST
511 SQ  ST
512 SR  ST
513 SS  ST
514 ST  ST
515 SU  ST
516 SV  ST
517 SW  ST
518 SX  ST
519 SY  ST
520 SZ  TU
521 TA  TU
522 TB  TU
523 TC  TU
524 TD  TU
525 TE  TU
526 TF  TU
527 TG  TU
528 TH  TU
529 TI  TU
530 TJ  TU
531 TK  TU
532 TL  TU
533 TM  TU
534 TN  TU
535 TO  TU
536 TP  TU
537 TQ  TU
538 TR  TU
539 TS  TU
540 TT  TU
541 TU  TU
542 TV  TU
543 TW  TU
544 TX  TU
545 TY  TU
546 TZ  UV
547 UA  UV
548 UB  UV
549 UC  UV
550 UD  UV
551 UE  UV
552 UF  UV
553 UG  UV
554 UH  UV
555 UI  UV
556 UJ  UV
557 UK  UV
558 UL  UV
559 UM  UV
560 UN  UV
561 UO  UV
562 UP  UV
563 UQ  UV
564 UR  UV
565 US  UV
566 UT  UV
567 UU  UV
568 UV  UV
569 UW  UV
570 UX  UV
571 UY  UV
572 UZ  VW
573 VA  VW
574 VB  VW
575 VC  VW
576 VD  VW
577 VE  VW
578 VF  VW
579 VG  VW
580 VH  VW
581 VI  VW
582 VJ  VW
583 VK  VW
584 VL  VW
585 VM  VW
586 VN  VW
587 VO  VW
588 VP  VW
589 VQ  VW
590 VR  VW
591 VS  VW
592 VT  VW
593 VU  VW
594 VV  VW
595 VW  VW
596 VX  VW
597 VY  VW
598 VZ  WX
599 WA  WX
600 WB  WX
601 WC  WX
602 WD  WX
603 WE  WX
604 WF  WX
605 WG  WX
606 WH  WX
607 WI  WX
608 WJ  WX
609 WK  WX
610 WL  WX
611 WM  WX
612 WN  WX
613 WO  WX
614 WP  WX
615 WQ  WX
616 WR  WX
617 WS  WX
618 WT  WX
619 WU  WX
620 WV  WX
621 WW  WX
622 WX  WX
623 WY  WX
624 WZ  XY
625 XA  XY
626 XB  XY
627 XC  XY
628 XD  XY
629 XE  XY
630 XF  XY
631 XG  XY
632 XH  XY
633 XI  XY
634 XJ  XY
635 XK  XY
636 XL  XY
637 XM  XY
638 XN  XY
639 XO  XY
640 XP  XY
641 XQ  XY
642 XR  XY
643 XS  XY
644 XT  XY
645 XU  XY
646 XV  XY
647 XW  XY
648 XX  XY
649 XY  XY
650 XZ  YZ
651 YA  YZ
652 YB  YZ
653 YC  YZ
654 YD  YZ
655 YE  YZ
656 YF  YZ
657 YG  YZ
658 YH  YZ
659 YI  YZ
660 YJ  YZ
661 YK  YZ
662 YL  YZ
663 YM  YZ
664 YN  YZ
665 YO  YZ
666 YP  YZ
667 YQ  YZ
668 YR  YZ
669 YS  YZ
670 YT  YZ
671 YU  YZ
672 YV  YZ
673 YW  YZ
674 YX  YZ
675 YY  YZ
676 YZ  ZA
677 ZA  ZA
678 ZB  ZA
679 ZC  ZA
680 ZD  ZA
681 ZE  ZA
682 ZF  ZA
683 ZG  ZA
684 ZH  ZA
685 ZI  ZA
686 ZJ  ZA
687 ZK  ZA
688 ZL  ZA
689 ZM  ZA
690 ZN  ZA
691 ZO  ZA
692 ZP  ZA
693 ZQ  ZA
694 ZR  ZA
695 ZS  ZA
696 ZT  ZA
697 ZU  ZA
698 ZV  ZA
699 ZW  ZA
700 ZX  ZA
701 ZY  ZA
702 ZZ  ABB
703 AAA  ABB
704 AAB  ABB
705 AAC  ABB
706 AAD  ABB
707 AAE  ABB
708 AAF  ABB
709 AAG  ABB
710 AAH  ABB
711 AAI  ABB
712 AAJ  ABB
713 AAK  ABB
714 AAL  ABB
715 AAM  ABB
716 AAN  ABB
717 AAO  ABB
718 AAP  ABB
719 AAQ  ABB
720 AAR  ABB
721 AAS  ABB
722 AAT  ABB
723 AAU  ABB
724 AAV  ABB
725 AAW  ABB
726 AAX  ABB
727 AAY  ABB
728 AAZ  ABC
729 ABA  ABC
730 ABB  ABC
731 ABC  ABC
732 ABD  ABC
733 ABE  ABC
734 ABF  ABC
735 ABG  ABC
736 ABH  ABC
737 ABI  ABC
738 ABJ  ABC
739 ABK  ABC
740 ABL  ABC
741 ABM  ABC
742 ABN  ABC
743 ABO  ABC
744 ABP  ABC
745 ABQ  ABC
746 ABR  ABC
747 ABS  ABC
748 ABT  ABC
749 ABU  ABC
750 ABV  ABC
751 ABW  ABC
752 ABX  ABC
753 ABY  ABC
754 ABZ  ABD
755 ACA  ABD
756 ACB  ABD
757 ACC  ABD
758 ACD  ABD
759 ACE  ABD
760 ACF  ABD
761 ACG  ABD
762 ACH  ABD
763 ACI  ABD
764 ACJ  ABD
765 ACK  ABD
766 ACL  ABD
767 ACM  ABD
768 ACN  ABD
769 ACO  ABD
770 ACP  ABD
771 ACQ  ABD
772 ACR  ABD
773 ACS  ABD
774 ACT  ABD
775 ACU  ABD
776 ACV  ABD
777 ACW  ABD
778 ACX  ABD
779 ACY  ABD
780 ACZ  ABE
781 ADA  ABE
782 ADB  ABE
783 ADC  ABE
784 ADD  ABE
785 ADE  ABE
786 ADF  ABE
787 ADG  ABE
788 ADH  ABE
789 ADI  ABE
790 ADJ  ABE
791 ADK  ABE
792 ADL  ABE
793 ADM  ABE
794 ADN  ABE
795 ADO  ABE
796 ADP  ABE
797 ADQ  ABE
798 ADR  ABE
799 ADS  ABE
800 ADT  ABE
801 ADU  ABE
802 ADV  ABE
803 ADW  ABE
804 ADX  ABE
805 ADY  ABE
806 ADZ  ABF
807 AEA  ABF
808 AEB  ABF
809 AEC  ABF
810 AED  ABF
811 AEE  ABF
812 AEF  ABF
813 AEG  ABF
814 AEH  ABF
815 AEI  ABF
816 AEJ  ABF
817 AEK  ABF
818 AEL  ABF
819 AEM  ABF
820 AEN  ABF
821 AEO  ABF
822 AEP  ABF
823 AEQ  ABF
824 AER  ABF
825 AES  ABF
826 AET  ABF
827 AEU  ABF
828 AEV  ABF
829 AEW  ABF
830 AEX  ABF
831 AEY  ABF
832 AEZ  ABG
833 AFA  ABG
834 AFB  ABG
835 AFC  ABG
836 AFD  ABG
837 AFE  ABG
838 AFF  ABG
839 AFG  ABG
840 AFH  ABG
841 AFI  ABG
842 AFJ  ABG
843 AFK  ABG
844 AFL  ABG
845 AFM  ABG
846 AFN  ABG
847 AFO  ABG
848 AFP  ABG
849 AFQ  ABG
850 AFR  ABG
851 AFS  ABG
852 AFT  ABG
853 AFU  ABG
854 AFV  ABG
855 AFW  ABG
856 AFX  ABG
857 AFY  ABG
858 AFZ  ABH
859 AGA  ABH
860 AGB  ABH
861 AGC  ABH
862 AGD  ABH
863 AGE  ABH
864 AGF  ABH
865 AGG  ABH
866 AGH  ABH
867 AGI  ABH
868 AGJ  ABH
869 AGK  ABH
870 AGL  ABH
871 AGM  ABH
872 AGN  ABH
873 AGO  ABH
874 AGP  ABH
875 AGQ  ABH
876 AGR  ABH
877 AGS  ABH
878 AGT  ABH
879 AGU  ABH
880 AGV  ABH
881 AGW  ABH
882 AGX  ABH
883 AGY  ABH
884 AGZ  ABI
885 AHA  ABI
886 AHB  ABI
887 AHC  ABI
888 AHD  ABI
889 AHE  ABI
890 AHF  ABI
891 AHG  ABI
892 AHH  ABI
893 AHI  ABI
894 AHJ  ABI
895 AHK  ABI
896 AHL  ABI
897 AHM  ABI
898 AHN  ABI
899 AHO  ABI
900 AHP  ABI
901 AHQ  ABI
902 AHR  ABI
903 AHS  ABI
904 AHT  ABI
905 AHU  ABI
906 AHV  ABI
907 AHW  ABI
908 AHX  ABI
909 AHY  ABI
910 AHZ  ABJ
911 AIA  ABJ
912 AIB  ABJ
913 AIC  ABJ
914 AID  ABJ
915 AIE  ABJ
916 AIF  ABJ
917 AIG  ABJ
918 AIH  ABJ
919 AII  ABJ
920 AIJ  ABJ
921 AIK  ABJ
922 AIL  ABJ
923 AIM  ABJ
924 AIN  ABJ
925 AIO  ABJ
926 AIP  ABJ
927 AIQ  ABJ
928 AIR  ABJ
929 AIS  ABJ
930 AIT  ABJ
931 AIU  ABJ
932 AIV  ABJ
933 AIW  ABJ
934 AIX  ABJ
935 AIY  ABJ
936 AIZ  ABK
937 AJA  ABK
938 AJB  ABK
939 AJC  ABK
940 AJD  ABK
941 AJE  ABK
942 AJF  ABK
943 AJG  ABK
944 AJH  ABK
945 AJI  ABK
946 AJJ  ABK
947 AJK  ABK
948 AJL  ABK
949 AJM  ABK
950 AJN  ABK
951 AJO  ABK
952 AJP  ABK
953 AJQ  ABK
954 AJR  ABK
955 AJS  ABK
956 AJT  ABK
957 AJU  ABK
958 AJV  ABK
959 AJW  ABK
960 AJX  ABK
961 AJY  ABK
962 AJZ  ABL
963 AKA  ABL
964 AKB  ABL
965 AKC  ABL
966 AKD  ABL
967 AKE  ABL
968 AKF  ABL
969 AKG  ABL
970 AKH  ABL
971 AKI  ABL
972 AKJ  ABL
973 AKK  ABL
974 AKL  ABL
975 AKM  ABL
976 AKN  ABL
977 AKO  ABL
978 AKP  ABL
979 AKQ  ABL
980 AKR  ABL
981 AKS  ABL
982 AKT  ABL
983 AKU  ABL
984 AKV  ABL
985 AKW  ABL
986 AKX  ABL
987 AKY  ABL
988 AKZ  ABM
989 ALA  ABM
990 ALB  ABM
991 ALC  ABM
992 ALD  ABM
993 ALE  ABM
994 ALF  ABM
995 ALG  ABM
996 ALH  ABM
997 ALI  ABM
998 ALJ  ABM
999 ALK  ABM
1000 ALL  ABM
1001 ALM  ABM
1002 ALN  ABM
1003 ALO  ABM
1004 ALP  ABM
1005 ALQ  ABM
1006 ALR  ABM
1007 ALS  ABM
1008 ALT  ABM
1009 ALU  ABM
1010 ALV  ABM
1011 ALW  ABM
1012 ALX  ABM
1013 ALY  ABM
1014 ALZ  ABN
1015 AMA  ABN
1016 AMB  ABN
1017 AMC  ABN
1018 AMD  ABN
1019 AME  ABN
1020 AMF  ABN
1021 AMG  ABN
1022 AMH  ABN
1023 AMI  ABN
1024 AMJ  ABN
1025 AMK  ABN
1026 AML  ABN
1027 AMM  ABN
1028 AMN  ABN
1029 AMO  ABN
1030 AMP  ABN
1031 AMQ  ABN
1032 AMR  ABN
1033 AMS  ABN
1034 AMT  ABN
1035 AMU  ABN
1036 AMV  ABN
1037 AMW  ABN
1038 AMX  ABN
1039 AMY  ABN
1040 AMZ  ABO
1041 ANA  ABO
1042 ANB  ABO
1043 ANC  ABO
1044 AND  ABO
1045 ANE  ABO
1046 ANF  ABO
1047 ANG  ABO
1048 ANH  ABO
1049 ANI  ABO
1050 ANJ  ABO
1051 ANK  ABO
1052 ANL  ABO
1053 ANM  ABO
1054 ANN  ABO
1055 ANO  ABO
1056 ANP  ABO
1057 ANQ  ABO
1058 ANR  ABO
1059 ANS  ABO
1060 ANT  ABO
1061 ANU  ABO
1062 ANV  ABO
1063 ANW  ABO
1064 ANX  ABO
1065 ANY  ABO
1066 ANZ  ABP
1067 AOA  ABP
1068 AOB  ABP
1069 AOC  ABP
1070 AOD  ABP
1071 AOE  ABP
1072 AOF  ABP
1073 AOG  ABP
1074 AOH  ABP
1075 AOI  ABP
1076 AOJ  ABP
1077 AOK  ABP
1078 AOL  ABP
1079 AOM  ABP
1080 AON  ABP
1081 AOO  ABP
1082 AOP  ABP
1083 AOQ  ABP
1084 AOR  ABP
1085 AOS  ABP
1086 AOT  ABP
1087 AOU  ABP
1088 AOV  ABP
1089 AOW  ABP
1090 AOX  ABP
1091 AOY  ABP
1092 AOZ  ABQ
1093 APA  ABQ
1094 APB  ABQ
1095 APC  ABQ
1096 APD  ABQ
1097 APE  ABQ
1098 APF  ABQ
1099 APG  ABQ
1100 APH  ABQ
1101 API  ABQ
1102 APJ  ABQ
1103 APK  ABQ
1104 APL  ABQ
И ещё одно, я не сказал, что это система счисления по основанию 27. Это
Цитата sergvg:
система счисления по основанию 27, но нули в ней не используются »

Последний раз редактировалось sergvg, 27-07-2009 в 12:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:23, 27-07-2009 | #6


Новый участник


Сообщения: 21
Благодарности: 5

Профиль | Отправить PM | Цитировать


Окончательный код циклом...

Код: Выделить весь код
sub rc2a1($){
  my $j = shift;
  my $str = '';
  for (;$j>0;$j=int($j/26)){
    my $r = $j % 26;
    if ($r == 0){
      $str='Z'.$str;
      $j--;
    }
    else {$str=chr($r+64).$str;}
  }
  return $str;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:02, 27-07-2009 | #7


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Спасибо, парни, за такой интерес к моему вопросу Вопрос решен

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:20, 28-07-2009 | #8

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Извини Delirium, уже дело принципа
Спасибо sergvg, что проверил код. Я что-то расслабился совсем. Я исхожу из принципа, что эта буквенная система представляет собой искажённую 26-чную систему исчисления, но со старшим разрядом из 27 символов. Таким образом, в 4-значное число максимально может иметь значение 27*26*26*26 - 1. (Это не противоречит тому, что 27-разрядное с неиспользуемыми нулями, но меняет логику поиска алгоритма) Протестировал, вроде сходится
Код: Выделить весь код
string rc2a1(int my_str_number)
{
   string str;
   int a=my_str_number;
   // здесь исправил перепутанное местами деление и остаток,
   // добавил компенсацию старшего разряда при делении 27*26*26*26 = (26 + 1)*26*26*26
   // и вызов констуктора string исправил.
   for(; 26<=a; str=string(1, 'A' + (a%26))+str, a=(a/26)-1) {}
   return string(1, 'A' + a)+str;
}
Немного переделав цикл и собрав одинаковые действия в одно, получаем:
Код: Выделить весь код
string rc2a1(unsigned a)
{
   string str;
   do { 
      str=string(1, 'A' + (a%26))+str;
      a=(a/26)-1;
   } while (a!=-1); 
   return str;

Последний раз редактировалось pva, 28-07-2009 в 07:51.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:37, 28-07-2009 | #9


Новый участник


Сообщения: 21
Благодарности: 5

Профиль | Отправить PM | Цитировать


Delirium, я для себя старался, мне нужно генерировать данные в эксель, использую Perl и Win32::OLE. Так там надо указывать диапазон ячеек в A1-стиле. В общем, задача схожая с твоей .

pva, первый код не проверял, но во втором, кажись, надо вычесть единицу из аргумента...

Код: Выделить весь код
sub rc2a1_pva($){
   my $str=undef;
   my $a =shift;
   $a--;
   do {
      $str=chr(65 + ($a%26)).$str;
      $a=int($a/26)-1;
   } while ($a!=-1);
   return $str;
}

Отправлено: 09:17, 28-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Получение массива ячеек для объединения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Получение объема выделенной памяти для приложения. HORRIBLE AutoIt 1 12-10-2009 22:46
Получение массива из строки с числами malev AutoIt 3 11-09-2009 00:08
[решено] StringRegExp: Получение массива где каждый элемент содержит Ini-секцию Creat0R AutoIt 9 28-08-2009 07:52
Использование - [решено] Получение новых серийников для XP SP3 Kirill NN Лицензирование продуктов Microsoft 14 30-05-2008 16:27




 
Переход