Ազգանունների անկում դեպի աքսես. Ինչպե՞ս կատարել մեծատառերի անկում excel-ում: Իրավիճակներ, երբ գործառույթը կարող է ճիշտ չաշխատել

Ֆայլը պարունակում է ընթացակարգեր 7.7 և 8.x-ի համար: Ընթացակարգին փոխանցվում է տող Ազգանուն Անուն Անուն Հայրանուն ձևաչափով:

UPD 11/26/10. երախտագիտությամբ՝ ֆունկցիայի նոր տարբերակ: Ես չեմ փորձարկել! Հարցեր այս տարբերակի աշխատանքի վերաբերյալ՝ իրեն, չգիտես ինչու չի ցանկանում տարածել :)

Գործառույթը CasesFULLNAME (Արժեք լրիվ անուն, Cases = 1, OnlyInitials = False, Value nSeparator = ".")
Եթե ​​TypeZnch (լրիվ անունը)<>Մուտքագրեք («String») Այնուհետև
Հաշվետվություն («Անվավեր տող է փոխանցվել» «գործի լրիվ անվանումը!» «»); Ամբողջական անվան վերադարձ;
Վերջ Եթե;

// հեռացնել բազմաթիվ բացատներ
Մինչդեռ 1 = 1 ցիկլ
Ամբողջական անուն = հապավում (StrReplace (լրիվ անուն, «», «»));
If Find (լրիվ անուն, «») = 0 Ապա դադարեցնել EndIf;
Ցիկլի ավարտ;

Եթե ​​TypeZnch (Case) = Type («String») Ապա
պահոց = SocrLP (NReg (Leo (Case, 1)));
Եթե ​​Գտնել («irdvtp», pad) = 0 Ապա

Վերջ Եթե;
ElseIf TypeZnch (Case) = Type («Համար») Այնուհետեւ
Եթե ​​(Պատ<1) или (Падеж>6) Այնուհետև
Զեկույց («Սխալ գործ է փոխանցվել» «գործի անվանումը» «!»); Ամբողջական անվան վերադարձ;
Վերջ Եթե;
պահոց = Case-1;
Վերջ Եթե;

Ամբողջական անուն = LP-ի հապավում (NReg (լրիվ անուն)); // սա ավելի հարմարավետ է

// սեփական կազմի անալիզատոր
Ազգանուն = "";
For d = 1 Ըստ Str Length (լրիվ անվանումը) Ցիկլ
նշաններ = Միջին (լրիվ անուն, դ, 1);

Ազգանուն = Ազգանուն + նիշ;
Ցիկլի ավարտ;
s = d + 1; // հատեց տարածությունը
Անուն = "";

նշաններ = Միջին (լրիվ անուն, դ, 1);
If char = "" Ապա ընդհատել EndIf;
Անուն = Անուն + նիշ;
Ցիկլի ավարտ;
s = d + 1; // հատեց երկրորդ տարածությունը
Միջին անուն = "";
For d = s Ըստ Str Length (լրիվ անվանումը) Ցիկլ
նշաններ = Միջին (լրիվ անուն, դ, 1);
If char = "" Ապա ընդհատել EndIf;
Հայրանուն = Հայրանուն + խորհրդանիշներ;
Ցիկլի ավարտ;

// այժմ ունենք առանձին Ազգանուն, Անուն և Հայրանուն։
// սկսվում է բովանդակության և դեպքերի վերլուծության փաստացի բլոկը

// վերադարձ, եթե ինքնին անվանական է: Եթե ​​սահմանված է վերադարձնել OnlyInitals-ը, ապա փոխարկեք սկզբնատառերի
Եթե ​​(Լեո (Պատյան, 1) = «Եվ») կամ (Պատյան = 1) Ապա
Եթե ​​ՈՉ միայն սկզբնաղբյուրներ կամ Գտնել (լրիվ անունը, «.»), ապա
Ամբողջական անվան վերադարձ; // կա՛մ արդեն փոխարկված տող է, կա՛մ փոխակերպման կարիք չկա
Վերջ Եթե;
Նոր ԼԻՎԱԾ ԱՆՈՒՆ = TREG (Ազգանուն) + "" + Vreg (Առյուծ (Անուն, 1)) + pSplitter + Breg (Leo (Հայրանուն, 1)) + pSeparator;
Վերադարձեք SokrLP (Նոր լրիվ անուն); // այն դեպքում, երբ բաժանարարը բացատ է։ Վերջինը մենք կտրեցինք
Վերջ Եթե;

// վերլուծել սեռը M / F
Եթե ​​Right (հայրանուն, 1) = «a» Ապա սեռ = «F» Հակառակ դեպքում Գենդեր = «M» EndIf;

// ստեղծել աղյուսակի կառուցվածք, որը պահպանում է բառերի վերջավորությունները
ընթացիկ = Արժեքների նոր աղյուսակ;
StringType = NewTypeDescription ("String", NewStringQualifiers (3));
NumberType = NewTypeDescription («Համար», «NewNumber Qualifiers» (1,0));
ընթացիկ.Columns.Add («StarOk», LineType); // հին վերջավորությունը 2 նիշ
// սյունակներ, որոնք պահում են նոր բառերի վերջավորությունները
ընթացիկ.Columns.Add («p»); // սեռական
ընթացիկ.Kolonki.Add («d»); // դատիվ
ընթացիկ.Columns.Add («in»); // մեղադրական
ընթացիկ.Columns.Add («t»); // ստեղծագործական
ընթացիկ.Kolonki.Add («p»); // նախադրյալ
// նշել, թե բառի վերջից քանի տառ պետք է կտրել,
ընթացիկ.Columns.Add ("NumberSection", NumberType); // կտրված տառերի քանակը

Ձայնավորներ = «aeeooiyyayuyu»; // ձայնավորների ցանկը որպես լար

// ======== մշակել ազգանունը ==========
// լրացրեք աղյուսակը ազգանվան տվյալները

Եթե ​​սեռը = «M» Ապա
տող = ընթացիկ.Ավելացնել (); // Իվանով
line.StarOk = "* s";

line.ColvoSlice = 0;

Կաթված = ընթացիկ Ավելացնել (); // Կրասինսկի
line.StarOk = "* th";
line.r = «վայ»; line.d = «ohmu»; line.v = «վայ»; line.t = «նրանք»; line.p = «օհմ»;
line.QuantitySection = 2;

Կաթված = ընթացիկ Ավելացնել (); // ամենակարող
line.StarOk = «ամաչկոտ»;
line.r = «նրան»; stok.d = «նրան»; line.in = «նրան»; line.t = «նրանք»; line.p = «ուտել»;
line.QuantitySection = 2;

Կաթված = ընթացիկ Ավելացնել (); // Սպիտակ
line.StarOk = "th";
line.r = «վայ»; line.d = «ohmu»; line.v = «վայ»; line.t = «ym»; line.p = «օհմ»;
line.QuantitySection = 2;

Կաթված = ընթացիկ Ավելացնել (); // գունատ
line.StarOk = "* th";

line.QuantitySection = 1;

Կաթված = ընթացիկ Ավելացնել (); // Ռաբինովիչ
line.StarOk = "* h";

line.ColvoSlice = 0;

Կաթված = ընթացիկ Ավելացնել (); // շտկել, slug
line.StarOk = «* դեպի»;
line.r = «ka»; line.d = «ku»; line.v = «ka»; line.t = «com»; line.p = «ke»;
line.QuantitySection = 2;

Կաթված = ընթացիկ Ավելացնել (); // շինկար
line.StarOk = "* b";
strotok.r = «i»; stotok.d = «u»; line.v = «i»; line.t = «ուտել»; line.p = «e»;
line.QuantitySection = 1;

Կաթված = ընթացիկ Ավելացնել (); // պերելման, օգանեսյան
line.StarOk = "* n";

line.ColvoSlice = 0;

Կաթված = ընթացիկ Ավելացնել (); // բարանկին
line.StarOk = "in";
line.r = «a»; line.d = «y»; line.v = «a»; line.t = «ym»; line.p = «e»;
line.ColvoSlice = 0;

ElseIf Գենդեր = «F» Ապա
տող = ընթացիկ.Ավելացնել (); // սկլոդովսկայա
line.StarOk = "th";
line.r = «ախ»; line.d = "oh"; line.v = «yu»; line.t = «oh»; line.p = «oh»;
line.QuantitySection = 2;

Կաթված = ընթացիկ Ավելացնել (); // Իվանովա
line.StarOk = "* a";
line.r = «ախ»; line.d = "oh"; line.v = «y»; line.t = «oh»; line.p = «oh»;
line.QuantitySection = 1;
Վերջ Եթե;


Եթե ​​ոչ EmptyString (Ազգանուն) Ապա
pb = Իրավունք (Ազգանուն, 3); count = «StarOk»; // որոնել այն
նորԱզգանուն = Ազգանուն; // եթե ոչինչ չփոխվի, կփոխվի
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>


Հակառակ դեպքում
// խստորեն չի գտնվել վերջին երեք նիշերով, որոնել երկու նիշով միայն վերջինով
pb = Իրավունք (Ազգանուն, 2);
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>Չսահմանված Հետո
Base = Leo (Ազգանուն, StrLength (Ազգանուն) -str. ColvoSection);
նորԱզգանուն = Basis + SokrLP (stro [pad]);
Հակառակ դեպքում // եթե երկուսը չգտանք, մեկ-մեկ փնտրեք
pb = "*" + Right (pb, 1);
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>
Base = Leo (Ազգանուն, StrLength (Ազգանուն) -str. ColvoSection);
նորԱզգանուն = Basis + SokrLP (stro [pad]);


str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>Չսահմանված Հետո // հայտնաբերվել է ըստ տեսակի
Base = Leo (Ազգանուն, StrLength (Ազգանուն) -str. ColvoSection);
նորԱզգանուն = Basis + SokrLP (stro [pad]);
Վերջ Եթե;
Վերջ Եթե;
Վերջ Եթե;
Վերջ Եթե;
Հակառակ դեպքում
նորԱզգանուն = "";
Վերջ Եթե;

// ======== մշակել անունը ==========
// լրացրեք աղյուսակը անվանման համար նախատեսված տվյալներով
ընթացիկ.Մաքուր ();

Եթե ​​Սեռը = «M» Ապա
// կարգավորել բացառությունները
Եթե ​​Անուն = «առյուծ» Ապա Անուն = «առյուծ» ՎերջԵթե;
If Name = «paul» Այնուհետեւ Name = «paul» EndIf;

Կաթված = ընթացիկ Ավելացնել (); // Սերգեյ
line.old = "* th";
strotok.r = «i»; stotok.d = «u»; line.v = «i»; line.t = «ուտել»; line.p = «e»;
line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // իվան + առյուծ + պավել
line.old = "* s";
line.r = «a»; line.d = «y»; line.v = «a»; strotok.t = «օհմ»; line.p = «e»;
line.colvoice = 0;

Կաթված = ընթացիկ Ավելացնել (); // նիկիտա
line.old = "* a";

line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // աղեղ
line.old = «ka»;

line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Երեմիա
line.old = «ia»;

line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Իլյա
line.old = "* i";

line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Իգոր
line.old = "* b";
strotok.r = «i»; stotok.d = «u»; line.v = «i»; line.t = «ուտել»; line.p = «e»;
line.colouction = 1;

ElseIf Գենդեր = «F» Ապա
// կարգավորել բացառությունները
// If Name = "Olga" then Name = "Olga" EndIf;

Կաթված = ընթացիկ Ավելացնել (); // Իրինա
line.old = "* a";
line.r = «s»; line.d = «e»; line.v = «y»; line.t = «oh»; line.p = «e»;
line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Ինգա, օլգա
line.old = «հա»;
line.r = «եւ»; line.d = «e»; line.v = «y»; line.t = «oh»; line.p = «e»;
line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Էսթեր
line.old = "* b";
line.r = «եւ»; line.d = «եւ»; line.v = «b»; line.t = «նոր»; line.p = «եւ»;
line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Մարիա
line.old = «ia»;
line.r = «եւ»; line.d = «եւ»; line.v = «u»; strotok.t = «նրան»; line.p = «եւ»;
line.colouction = 1;

Կաթված = ընթացիկ Ավելացնել (); // Սոֆիա
line.old = "* i";
line.r = «եւ»; line.d = «e»; line.v = «u»; strotok.t = «նրան»; line.p = «e»;
line.colouction = 1;
Վերջ Եթե;

// սեղանը լիքն է. հաշվեք վերջին 2 տառերը և փնտրեք դրանք
Եթե ​​ոչ EmptyString (Անուն) Ապա
pb = Աջ (Անուն, 2); count = «StarOk»; // որոնել այն
newName = Անուն; // եթե ոչինչ չփոխվի, կփոխվի
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>Undefined Հետո // հայտնաբերվել է խիստ անմիջապես


Հակառակ դեպքում // խստիվ չի գտնվել, մենք որոնում ենք միայն վերջինով
pb = "*" + Right (pb, 1);
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>Չսահմանված Հետո // հայտնաբերվել է վերջին
Base = Leo (Name, StrLength (Name) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
Հակառակ դեպքում // մենք չգտանք վերջինը, փնտրում ենք տառերը
pb = «*» +? (Գտեք (ձայնավորներ, աջ (pb, 1)) = 0, «s», «g»);
str = ընթացիկ Գտեք (pb, count);
Եթե ​​փող<>Undefined = 1 Այնուհետեւ // հայտնաբերվել է ըստ տեսակի
Base = Leo (Name, StrLength (Name) -string.ColvoSection);
newName = Basis + SokrLP (stro [pad]);
Վերջ Եթե;
Վերջ Եթե;
Վերջ Եթե;
Հակառակ դեպքում
newName = "";
Վերջ Եթե;

// ======== մշակել միջին անունը, այստեղ ավելի հեշտ է ==========
ընթացիկ.Մաքուր ();

Եթե ​​Սեռը = «M» Ապա
տող = ընթացիկ.Ավելացնել ();
line.r = «a»; line.d = «y»; line.v = «a»; line.t = «ուտել»; line.p = «e»;
line.colvoice = 0;
ElseIf Գենդեր = «F» Ապա
տող = ընթացիկ.Ավելացնել ();
line.r = «s»; line.d = «e»; line.v = «y»; line.t = «oh»; line.p = «e»;
line.colouction = 1;
Վերջ Եթե;
Եթե ​​ոչ դատարկ տող (հայրանուն) Ապա
Հիմք = Առյուծ (Հայրանուն, Str Length (Patronymic) -tok.KolvoSrez);
նոր հայրանուն = Basis + SokrLP (ընթացիկ [pad]);
Հակառակ դեպքում
նոր հայրանուն = "";
Վերջ Եթե;

Եթե ​​միայն սկզբնաղբյուրներ, ապա
newName = Leo (newName, 1); նոր հայրանուն = Առյուծ (նոր հայրանուն, 1);
Վերջ Եթե;

// սահմանել առաջին տառերը մեծատառով
նորԱզգանուն = ВReg (Լեո (նորԱզգանուն, 1)) + Միջին (նորԱզգանուն, 2);
newName = VReg (Leo (newName, 1)) + Middle (newName, 2);
նոր հայրանուն = VReg (Leo (նոր հայրանուն, 1)) + Միջին (նոր հայրանուն, 2);

// և հիմա ամեն ինչ միասին է
Եթե ​​սկզբնատառերը միայն Այնուհետև // եթե սկզբնատառերի ձևաչափը նշված է
նոր լրիվ անուն = նոր ազգանուն + «» + նոր անուն + բաժանիչ + նոր հայրանուն + բաժանիչ;
Հակառակ դեպքում
նոր լրիվ անուն = նոր ազգանուն + "" + նոր անուն + "" + նոր հայրանուն;
Վերջ Եթե;

Եթե ​​Find (լրիվ անուն, «.») Այնուհետև // Եթե մուտքագրված պարամետրը ազգանունն է՝ սկզբնատառերով: Մի դիպչեք սկզբնատառերին
novFIO = նորԱզգանուն + "" + Treg (Անուն) + Treg (Հայրանուն);
Վերջ Եթե;

Վերադարձ SokrLP (novFIO);
EndFunction

Այստեղ դուք կարող եք ստանալ Microsoft Excel-ի վերաբերյալ ձեր հարցերի պատասխանները 57638 471543
44519 357828
Հիմնական ֆորումի լավագույն ընդգծված թեմաները 14 80
Եթե ​​դուք հաջողակ Mac սեփականատեր եք 😉 217 1059

21 սեպտ 2018 06:21:34

Բաժին տեղադրման համար վճարվածհարցեր, նախագծեր և առաջադրանքներ և կատարողների որոնում դրանց համար: 2100 13379
Եթե ​​դուք ներբեռնել կամ գնել եք PLEX հավելումը Microsoft Excel-ի համար և ունեք հարցեր կամ ցանկություններ, սեղմեք այստեղ: 310 1587
808 11620
Ֆունկցիոնալության, կանոնների և այլնի քննարկում: 269 3464

Առցանց (հյուրեր՝ 590, օգտվողներ՝ 12, որից թաքնված՝ 3),

Այսօր (37), (32), (28), (37), (36), (52) ծննդյան օրն է։

Ընդամենը գրանցված օգտվողներ՝ 83105

Քննարկմանը մասնակցել են՝ 31843

Ընդհանուր թեմաներ՝ 105875

անկում ըստ դեպքերի excel-ում

Գլխում Այլ լեզուներ և տեխնոլոգիաներայն հարցին, թե հնարավո՞ր է հեղինակի կողմից տրված Excel ձևաչափով գոյականները ավտոմատ կերպով շեղել Զուֆարլավագույն պատասխանն է Լավ օր.
Եթե ​​մենք խոսում ենք լրիվ անվան, աշխատանքի կոչումների կամ ստորաբաժանումների մասին, ապա կարող եք: Ճիշտ է, սա ավելի շուտ գործիք է մշակողի համար: Այնուամենայնիվ, օգտվողը նույնպես կարող է դա պարզել: Օրինակներն ունեն պատրաստի մակրոներ Excel-ի համար։
Հաջողություն!
Հ.Գ Որոնեք Google-ում «Ազգանունների, անունների և հայրանունների անկում ըստ դեպքերի» բանալին

22 պատասխան

Հեյ Ահա թեմաների ընտրանի՝ ձեր հարցի պատասխաններով. հնարավո՞ր է արդյոք Excel ձևաչափով գոյականները ինքնաբերաբար շեղել:

Պատասխան՝-ից ողողել
Ոչ, այս հատկությունը չի աջակցվում Excel-ում: Բայց հատուկ դեպքի համար կարող եք օգտագործել IF ֆունկցիան՝ ընտրելով մեկը կամ մյուսը:

Պատասխան՝-ից Պրոսցենիում
Դուք «Ծրագրավորում» կատեգորիայում եք, ուստի ոչ ոք չի կարող ձեզ խանգարել VBA-ում գրել ձեր սեփական գործառույթը, որը կկատարի այս աստվածահաճո գործը: Եվ միայն այս ձևաչափով խնդիրը լուծելը միանգամայն իրատեսական է։

Պատասխան՝-ից մկրտվել
Լսել էի, որ ռուսաց լեզվի բարեփոխումն անցել է, բայց չէի էլ պատկերացնում, որ ներմուծվել են «գոյականներ Excel ֆորմատով»)))))))

Հատուկ գործառույթ MS Excel-ի համար

Ամբողջական անվան անկում առ դեպք

Ֆունկցիան թույլ է տալիս ցուցադրել անվանական դեպքում տրված ազգանունը, անունը և հայրանունը՝ ցանկացած այլ գործի տեսքով:

Կիրառման տարածք.

Գործառույթը հարմար է օգտագործել MS Excel-ում փաստաթղթերի ձևավորումն ավտոմատացնելու համար (կամ դրանց ձեռքով ստեղծումը հեշտացնելու համար), որտեղ լրիվ անվանումը պետք է նշվի ոչ անվանական դեպքում՝ տարբեր տեսակի պայմանագրեր, կանխիկ պատվերներ, անդորրագրեր, հաշտեցման ակտեր, հրամաններ, արձանագրություններ, լիազորագրեր և այլն։

Գործառույթն անփոխարինելի է նաև, եթե ավտոմատացման գործիքներն իրականացնում են վերը նշված փաստաթղթերի ձևավորումը MS Word հավելվածում՝ MS Excel աղյուսակներում պարունակվող տվյալների հիման վրա:

Օգտագործման օրինակներ.

  • պայմանագրում` «ներկայացնում է պետ Բարանով Պետր Վյաչեսլավովիչ«
  • կանխիկ պատվերներում՝ «տրված Հնատյուկ Պավել Վասիլևիչ«», - ստացվել է Իրինա Սերգեևնա Գրիցենկո«
  • լիազորագրում. «Ես վստահում եմ մեքենայի տնօրինությանը Սմիրնիցկի Վիտալի Վալերիևիչ«
  • կարգով՝ «նշանակել Ստեպաշովա Օլգա Նիկոլաևնա«
  • արձանագրությունում՝ «հաշվետվությունը կազմված է Դվորժեցկի Նիկիտա Իվանովիչ«

Ինչ է իրականացվում.

  • «-ով», «-եվ», «-ին», «-յան (գ)», «-սկի (-ցկի)», «-սկոյ (-ցկոյ)» բոլոր վերջավորություններով ազգանունները ճիշտ են մերժվել: « -Թ»», -իչ «», -իհ «», -եց «», -նկո «», -ուկ «», -յուկ «», -իչ «», -յա «և ուրիշներ՝ Պավլով, Զինովև. , Գագարին, Պետրոսյան, Վիսոցկի, Տրուբեցկոյ, Ցոյ, Զադորոժնի, Սադովնիչի, Սեդիխ, Դոլգիխ, Սոսկովեց, Նեստերենկո, Գոնչարուկ, Դանիլյուկ, Ռաբինովիչ, Դանելիա, Կվաշա, Վրուբել, Կոզակ, Կազաչոկ և այլն, ինչպես նաև համապատասխան իգական ազգանունը։
  • Հաշվի են առնվում արական և իգական սեռի ազգանունների անկման տարբերությունները՝ Տկաչ Վիկտոր և Տկաչ Սվետլանա, Կոզովեց Անտոն և Կոզովեց Եկատերինա։
  • բարդ ազգանունները ճիշտ են մշակվում՝ օրինակ՝ Մամին-Սիբիրյակ, Սալտիկով-Շչեդրին, Նեմիրովիչ-Դանչենկո, Լեբեդև-Կումաչ։
  • Օտարալեզու ազգանունները հակված չեն՝ Գալուա, Մորուա, Դեֆո, Դալի, Մերինգ, Վերդի, Գարսիա, Հեմինգուեյ և այլն։
  • «-oglu», «-kyzy», «ibn» մասնիկներով հայրանունները հաջողությամբ մշակվում են. Ալի իբն Ալի իբն Սինոյ
  • սեռը (արական / իգական) ինքնաբերաբար որոշվում է հայրանունով և դրա հիման վրա ընտրվում են համապատասխան անկման կանոնները
  • այն իրավիճակների համար, երբ դժվար է ինքնաբերաբար որոշել սեռը (միջին անունը օտար է կամ բացակայում է), կարող եք նշել սեռը որպես ֆունկցիայի պարամետր։
  • հնարավոր եզրակացություն «ազգանուն + սկզբնատառեր» կրճատ ձևով. Պոլոզով Ն. Ա., Վասիլևա Ա. Կ., Դվորժեցկի Է. Ե.
  • երկուսն էլ ձևով օգտագործելու ունակությունը վերնաշենքեր(կարելի է օգտագործել այս աշխատավայրի բոլոր ֆայլերում) և ձևով ֆայլում ներկառուցված կոդը(ֆունկցիան կաշխատի այս ֆայլում ցանկացած աշխատավայրում. հարմար է, եթե ֆայլը, օրինակ, ուղարկվի կոնտրագենտին)
  • բաց կոդով - եթե ցանկանում եք, կարող եք ուսումնասիրել ալգորիթմը կամ փոփոխել

Ինչպե՞ս միացնել:

Ծրագիրը մեկ ֆայլ է անունով bdgFIOPropisyu.bas... Այն որոշակի ֆայլում օգտագործելու համար ֆունկցիան պետք է ներմուծվի այս ֆայլ: Սա պահանջում է.

  1. բացեք MS Excel ֆայլը, որտեղ ցանկանում եք օգտագործել գործառույթը
  2. մուտքագրեք VBA խմբագիր՝ սեղմելով «Alt + F11» թեժ ստեղնը կամ ցանկի միջոցով.
  3. VBA խմբագրի հիմնական ընտրացանկում ընտրեք «Ֆայլ» -> «Ներմուծել ֆայլ ...» կետը.
  4. ֆայլի ընտրության պատուհանում, որը հայտնվում է, ընտրեք ֆայլը bdgFIOPropisyu.basև սեղմեք «Բացել» կոճակը.

Վերջ, ծրագրի կոդը ներմուծված է, և դուք կարող եք օգտագործել այն:

Ինչպես օգտագործել?

Ահա դրա օգտագործման ևս մի քանի օրինակ.

Իրավիճակներ, որտեղ գործառույթը կարող է լինել սխալ:

Չնայած այն հանգամանքին, որ կան բազմաթիվ իրավիճակներ, երբ ֆունկցիայի շահագործումը կարող է անբավարար լինել, ստորև թվարկված են մի քանիսը, գործնական աշխատանքում նման լրիվ անվան հետ բախման հավանականությունը բավականին փոքր է, քանի որ. 99,9% դեպքերում Ռուսաստանի տարածքում հայտնաբերված ազգանունները թեքված են ընդհանուր կանոններով։
Բացի այդ, հարկ է նշել, որ այլ ալգորիթմներն ու ծրագրերը նույնպես չեն կարող երաշխավորել արդյունքի ճիշտությունը 100% դեպքերում. ռուսաց լեզուն չափազանց մեծ է և հզոր, որպեսզի նկարագրվի մի շարք տրամաբանական կանոններով (տես ստորև՝ շեշտի դիրքը մի խոսքով, ազգանվան ծագումը, արական ձևի ուղղագրությունից ազգանվան իգական ձևը գրելու կախվածության մասին և այլն):

  • Ռուսաց լեզվի կանոնների համաձայն՝ արական և իգական սեռի անկումը օտար լեզու«-ա»-ով և «-յա»-ով վերջացող ազգանունները կախված են բառի շեշտադրման տեղից և ազգանվան ծագումից:
    Բոլոր ազգանունները վերջանում են անշեշտ«-Ա» բաղաձայններից հետո անկում է՝ Սենեկա -> Սենեկա -> Պետրարկ -> Պետրարկ, Թթվասեր -> Թթվասեր, Կուրոսավա -> Կուրոսավա, Գլինկա -> Գլինկա, Օկուջավա -> Օկուջավա և այլն: Ազգանունների անկում հարվածային գործիքներ«-ա»-ն վերջում կախված է իր ծագումից. ֆրանսիական ծագում ունեցող ազգանունները թեքված չեն՝ Դումա, Դեգա, Ֆերմա, Պետիպա և այլն, այլ ծագման ազգանունները (սլավոնական և արևելյան լեզուներից) մերժվում են՝ Mitta -> Միտի, Կվաշա -> Կվաշի, Թավա -> Տապակներ, Կոչերգա -> Քոչերգի, Համզա -> Համզի և այլն:
    Նմանապես անխորտակելի են ֆրանսիական ծագում ունեցող ազգանունները, որոնց վերջում ընդգծված «-i» է նշվում՝ Զոլա, Տրոյա։ «-յա»-ի մյուս բոլոր ազգանունները մերժված են՝ Գոլովնյա -> Գոլովնի, Դանելիա -> Դանիլիա, Բերիա -> Բերիա, Գոյա -> Գոյա:
    Քանի որ անհնար է ծրագրային կերպով որոշել շեշտի դիրքը և ազգանվան ծագումը, ծրագրի ալգորիթմում ենթադրվում է, որ բոլոր նման ազգանունները մերժվում են ընդհանուր կանոնների համաձայն: Ուստի ֆրանսիական ազգանունները վերջավորության շեշտադրմամբ ծրագրով սխալ են մշակվում՝ Դյումա -> Դյումա, Զոլա -> Զոլի, Պետիպա -> Պետիպա։
  • «-y», «-y», «-y» վերջացող արական ազգանունները մերժվում են որպես Gorky -> Gorky, Blissful -> Blissful, Bronevoy -> Armor ածականներ: Բացառություն են կազմում այն ​​դեպքերը, երբ նման վերջավորությամբ ազգանունը ընդհանուր գոյական է (Nightingale, Vodopoy, Genius, Scenario) կամ ծագումով օտար է (Tsoi, Tskhoi, Choi): Քանի որ հնարավոր չէ ծրագրային կերպով որոշել, թե արդյոք ազգանունը նման բացառություն է, պայմանականորեն ընդունված է, որ «-th», «-th», «-y» վերջավորություններ ունեցող բոլոր ազգանունները մերժվում են որպես ածականներ: Դեպքերի ճնշող մեծամասնության դեպքում դա ճիշտ է, սակայն ազգանուն-գոյականների հետ կապված բացառիկ դեպքերում ֆունկցիայի արդյունքը կլինի սխալ՝ Կոզոդոյ Յակով -> Կոզոդոյ Յակով, Հանճարեղ Ստեֆան -> Գենեգո Ստեֆան։
    Սակայն, որպես բացառություն, ալգորիթմը հաշվի է առել այս վերջավորություններով և 5-ից պակաս տառերով (հիմնականում ծագումով կորեական) ազգանունների անկումը. Վիկտոր Ցոյ -> Վիկտոր Ցոյ:
  • Որոշ դեպքերում «-ina», «-ova» վերջացող իգական ազգանվան ճիշտ անկումը հնարավոր է միայն այն դեպքում, եթե հայտնի է համապատասխան արական ազգանվան անկումը. Pearl Lyudmila, Malina Svetlana կարելի է մերժել, ինչպես սովորական ձևով. Մարգարիտ Լյուդմիլա -> Մարգարիտ Լյուդմիլա, Մալինա Սվետլանա -> Մալինա Սվետլանա (եթե համապատասխան արական ազգանուններն են, օրինակ՝ Ժեմչուժին Բորիս և Մալին Օլեգ), իսկ գոյականի տեսքով՝ Մարգարիտ Լյուդմիլա -> Մարգարիտներ Լյուդմիլա, Մալինա Սվետլանա -> Մալինա Սվետլանա (եթե ազգանվան արական ձևերը, օրինակ, Պերլ Բորիս և Մալինա Օլեգ):
    Ալգորիթմում անհնար է հաշվի առնել նման նրբերանգները, հետևաբար բոլոր կանանց ազգանունները մշակվում են ֆունկցիայի համաձայն՝ համաձայն նույն կանոնների (ինչպես ածականները), ինչը որոշ դեպքերում կարող է հանգեցնել սխալ արդյունքների։
  • Նմանատիպ իրավիճակ է «-ով (ա)», «-և (ա)», «-ին (ա)» վերջացող արական և իգական ազգանունների դեպքում, որոնք համանուն են ընդհանուր գոյականի հետ՝ Բորով, Լև, Բու, Բարին։ , Կորովա, Բու, Նկարչություն, Փերինա, Ծերուկ և այլն): Ազգանունի և գոյականի ինքնությունը ծրագրային ձևով որևէ ձևական նշաններով հաստատելու միջոց չկա, հետևաբար նույն ընդհանուր կանոնների համաձայն նման ազգանունների մերժումը հանգեցնում է ձևի սխալ արդյունքների. Լև Պավել -> Լևիմ Պավել, Ֆիլին Սերգեյ -> Ֆիլին: Սերգեյ, Կորովա Քսենիա -> Կորովոյ Քսենիա, Բու Օլգա -> Օլգայի Բուն, Ալլայի նկարը -> Ալլայի նկարը:
  • Փափուկ նշանով վերջացող արական ազգանունները հակված են՝ Միխայիլ Վրուբել -> Միխայիլ Վրուբել, Նիկոլայ Գոգոլ -> Նիկոլայ Գոգոլ և այլն։ Սակայն անկման դեպքում նման ազգանունների վերջավորությունները կախված են նրանից, թե ինչպիսի գոյականներ են դրանք՝ արական, իգական, թե չեզոք։
    Հնարավոր չէ ալգորիթմորեն որոշել գոյականի սեռը, հետևաբար, այն դեպքերում, երբ արական ազգանունը իգական կամ չեզոք գոյական է, ֆունկցիան ճիշտ չի աշխատի. Steel Ivan -> Steel Ivan, Wormwood Victor -> Wormwood Victor:
  • «–ժա», «–կա», «–չա», «–շա», «–շա» վերջացող ազգանունների գործիքային գործի ձևավորումը կախված է բառի շեշտադրումից. եթե այս վերջավորությունը անշեշտ է, ապա թեքությունը փոխվում է «-Ey»-ի. Kapitsa Peter -> Kapitsa Peter, Cloud Fyodor -> Cloud Fyodor; եթե վերջավորությունը շեշտված է, այն փոխարինվում է «-oi»-ով` Կվաշա Իգոր -> Կվաշոյ Իգոր, Մոմ Իվան -> Մոմ Իվան: Նման իրավիճակ է «-ets» վերջացող ազգանունների դեպքում. առանց շեշտի վերջավորությունը փոխվում է «-em»-ի. Victor Finger -> Victor Finger; սթրեսի տակ - «-th»-ի վրա՝ Օլեգ Սոսկովեց -> Օլեգ Սոսկովեց:
    Ինչպես նշվեց վերևում, անհնար է ծրագրային կերպով որոշել սթրեսի դիրքը բառի մեջ, հետևաբար ծրագրային ալգորիթմում ենթադրվում է, որ «-ja», «-ca», «-cha», «-sha» բառերով. », «–շա» , վերջավորությունը անշեշտ է (այդպիսի բառեր կան ավելի շատ), այսինքն՝ գործիքային գործը միշտ կազմվում է «–էյ» վերջավորությամբ։ Ընդհակառակը, «ets» վերջացող բառերում ընդունված է, որ վերջավորությունը շեշտված է, այսինքն՝ անկումը կլինի «-om» վերջավորությամբ։ Համապատասխանաբար, այլ դեպքերում կնկատվեն ձևի սխալներ՝ Կվաշեյ Իգոր, Մոմեր Իվան, Ֆինգեր Վիկտոր:
  • Ռուսաց լեզվի կանոնների համաձայն, կրկնակի ռուսերեն ազգանվան առաջին մասը հակված է, եթե այն ինքնին կարող է օգտագործվել որպես ազգանուն՝ Մամին-Սիբիրյակի ստեղծագործությունը, Սալտիկով-Շչեդրինի պատմությունը, Ռիմսկի-Կորսակովի օպերան, և այլն: Հակառակ դեպքում այն ​​չի փոխվում՝ Վան Դեյկի նկարը, Դոն Ժուանի արկածները, Դոն Կիխոտի սկյուռիկը և այլն։ Այսպես, օրինակ, առաջին մասը հակված է Սեմյոնով-Տյան-Շանսկի ազգանունին, բայց ոչ երկրորդը։ Սեմյոնով-Տյան-Շանսկիի ստեղծագործությունները։
    Կրկին ալգորիթմորեն անհնար է որոշել, թե արդյոք ազգանվան բաղկացուցիչ մասը անկախ է, հետևաբար աշխատանքի համար ենթադրվում է, որ բարդ ազգանվան բոլոր մասերը պետք է մերժվեն (շատ դեպքերում դա այդպես է), ինչը մի շարք իրավիճակներում հանգեցնում է. սխալներ՝ Վանա-Դայք, Դոն-Կիխոտ, Սեմյոնովա-Տյանա-Շանսկի:
  • Օտար ազգանունները, որոնք վերջանում են «-ով» և «-ին» գործիքային գործի մեջ, փոխում են վերջավորությունը «-th»-ով՝ Բենջամին Ֆրանկլին, Չարլզ Դարվին, Չարլի Չապլին, Ալեքսանդր Գրին։ Նմանատիպ վերջավորություններով «ռուսական» ազգանունները վերջանում են «-th»-ով՝ Իվանով, Գագարին, Ֆոնվիզին և այլն։ Չնայած այն հանգամանքին, որ վերոնշյալ ազգանունները (Ֆրանկլին, Դարվին, Չապլին, Գրին) հաշվի են առնվել ալգորիթմում որպես բացառություններ, փոքր հավանականություն կա, որ հանդիպի որևէ այլ նմանատիպ օտար ազգանուն՝ այս դեպքում՝ ֆունկցիայի արդյունք։ սխալ կլինի։

Ազգանունների և անունների անկման կանոններն օգտագործվում են Ն.Ա.Էսկովայի աշխատության 13.1 և 13.2 բաժիններին համապատասխան: «Գոյականների թեքման դժվարություններ. «Ժամանակակից մամուլի լեզու» դասընթացի գործնական պարապմունքների ուսումնական նյութեր.(ԽՍՀՄ մամուլի պետական ​​կոմիտե. Մամուլի աշխատողների խորացված պատրաստության համամիութենական ինստիտուտ. Մ., 1990):

Գինը: 1500 ռուբլի