Получить имя ячейки указав порядковый номер:
CODE:external(INT, "_strrev", "_strrev", "msvcrt.dll");
messagebox(GetName(3)); // D
messagebox(GetName(27)); // AB
for (int n=55; n<60; n++)messagebox(format(n)+" = "+GetName(n)); // BD:BH
function GetName(int num)
{
string Name2 = "";
char c[99];
getNameFromNumber(num, #Name2);
strcpy(#c[0], Name2);
_strrev(address(#c[0]));
return format(#c[0]);
}
function getNameFromNumber(int num, string #Name)
{
int numeric = mod(num, 26);
string letter = formatic(65 + numeric);
int num2 = num / 26;
Name = Name + letter;
if (num2 > 0)return getNameFromNumber(num2 - 1, #Name);
else return;
}
function mod(int x, int y){int z=x/y; return x-z*y;}
Получить номер ячейки указав имя:
CODE:external(INT, "_strrev", "_strrev", "msvcrt.dll");
messagebox(get_number("D"));
messagebox(get_number("AB"));
function get_number(string ceil)
{
int result = 0;
char c[99];
strcpy(#c[0], ceil);
_strrev(address(#c[0]));
for(int i=0; i<size(ceil); i++)
{
int num = formatci(c[i])-64;
result = result + pow(26, i) * num;
}
return result-1;
} (Отредактировано автором: 29 Апреля, 2022 - 02:27:52) |