Сарыг динамик байдлаар томьёолох нь

Сар гэхээр та бүгд тэнгэрт байдаг сарыг ойлгож болохгүй. Бидний одоо ярих гэж буй сар бол та бидний сайн мэдэх он тооллын сар юм шүү гэдийг юуны өмнө анхааруулая. Жилд 12 сар байдаг. Нэг жил өнгөрөхөд 12 сар өнгөрөнө. Дараагийн жил эхлэхэд мөн л нэгдүгээр сараар эхлээд 12 дугаар сараар дуусна. Гэх мэтчилэн хэзээ ч дуусахгүй 12 сарын цикл үргэлжлэнэ. Харин бид сарыг оноор нь ялгаж өнгөрсөн, одоо, ирээдүйн сарыг мэддэг. Гэтэл бид зарим тохиолдолд зөвхөн сартай ажиллах нөхцөл байдал үүсдэг. Зөвхөн сартай ажиллаж байгаа нөхцөлд сарыг динамик байдлаар томьёолох шаардлагатай болдог. Өөрөөр хэлбэл тухайн нэг сарыг сонгоход сонгогдсон сарын дараагийн сарууд үргэлжлэн гарах томьёолол юм. Үүнийг дүрслэн үзүүлбэл:

Гэх мэтчилэн сар сонгогдоход дараагийн сарууд автоматаар үргэжлэн сонгодсон сарын өмнөх сарыг хүрэл циклдэх процесс юм.

Иймээс одоо дээрх бичлэгт үзүүлсэн томьёоллыг хэрхэн хийх талаар одоо авч үзье. Тус динамик сарын томьёололд бидний өмнө үзэж байсан INDEX, MATCH, MOD, COLUMNS зэрэг функцүүдийг ашиглах болно. За одоо динамик сарын томьёолох үндсэн зарчмаа тодорхойлоё.

Юун түрүүнд анхны сарыг тодорхойлно. Үүний дараагаар тухайн сарын байршлыг тогтоох замаар дараагийн сарын байршлыг тодорйлно. Ингээд INDEX функцийг ашигалж тодорхой тооцоолол хийсний үр дүнд сонгогдсон сарын дараагийн саруудыг автоматаар тодорхойлох болно.

1-12 сарыг =A2:A13 мужид байршуулая. Харин C1 нүдэнд =A2:A13 мужид байршуулсан мэдээллийг ашиглах замаар сонгодох сарын листийг үүсгье. Лист хэрхэн үүсгэх талаар та ЭНЭ линкээс үзээрэй.

За одоо C1 нүдэнд сонгогдсон САР нь =A2:A13 мужид байршуулсан мэдээллийн хэд дэхь мөрөнд байгааг A1 нүдэнд =MATCH() функцээр тодорхойлоё. Үүний тулд бид дараах томьёог бичнэ.

=MATCH(C1,$A$2:$A$13,0)

Ингэснээр C1 нүдэнд тодорхойлогдсон сар =A2:A13 мужийн хэд дэхь мөрөнд байгаа нь тодорхой болно. Одоо D1 нүдэнд C1 нүдэнд сонгогдсон сарын дараагийн сарыг тодорхойлоё. Үүнийг энгийнээр бодоход маш хялбар мэт харагдана. Өөрөөр хэлбэл С1 байршил A1 нүдэнд мэдэгдэж байгаа юм чинь А1-н утга дээр 1-ийг нэмээд явахад л дараагийн саруудын байршил тодорхойлогдоно гэж харагдаж байгаа байх.

Бидэнд дараагийн сарын байршил нь мэдэгдэж байгаа тохиолдолд сарыг INDEX функцийг ашиглаад хялбархаан олчихож болно. Жишээлбэл C1 нүдэнд 6 сар гэж өгөгдсөн бол түүний байршил нь =A2:A13 мужийн 6-р мөрөнд байна. Харин дараагийн сар нь 7 сар тул 7 дугаар мөрөнд байх ёстой. Тэгвэл үүнийг D1 нүдэнд дараах байдлаар томьёолоё.

=INDEX($A$2:$A$13,$A$1+COLUMNS($D1:D$1))

Дээрх томьёо буруу учраас дээрээс нь дарчихлаа. D1 нүдний утгыг N1 нүд хүртэл хуулах буюу copy/paste хийнэ. Дээрх томьёгоор ашигласан нөхцөлд үр дүнг 12 сар хүртэл зөв гаргана. Гэвч 12 сарын дараа 1 сар, 2 сар …. 5 сар хүртлэх үр дүнг гаргах ёстой. Гэвч тус томьёо гаргаж чадахгүй.

Мэдээж алдаа зааж байна. Учир нь COLUMNS($D1:D$1) томьёо нь 1 , 2, 3, ….. 12 хүртэл үр дүнг гаргана. Дээрээс нь нэмээд C1 нүдний байршилын тоо нэмэгдэнэ. Тэгэхээр 12+6=18 болж байна. Тэгтэл нийт сар байршиж байгаа A2:A13 мужийн нийт утга ердөө 12 байна. Гэтэл INDEX функцэд 1, 2, 3, …. 12 хүртэл байршилтай утга оруулсан байхад 13, 14, 15, 16, 17, 18 гэсэн байршлын утгуудыг гаргаж чадахгүй учраас алдаа заасан байна.

Иймээс бид INDEX функцэд ашиглагдах 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 гэсэн өсөөд буурсан тоо үүсгэх шаардлагатай болж байна. Жишээлбэл С1-н утга 6 сар гэж өгөгдсөн бол INDEX функцэд ашиглагдах утгууд 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5 гэсэн утгууд шаардлагатай болно.

Дээрх нарийн тооцоололд бид MS Excel программын MOD функцийг ашиглана.

=COLUMNS($D1:D$1) томьёоллын хамгийн их утга нь 11 (C1-н утга ороогүй учраас 12-1=11 болно) байх болно. Харин А1 нүдний хамгийн их утга 12 байх болно. Энэ хоёрын нийлбэрээр $A$1+COLUMNS($D1:D$1) томьёоны хамгийн их утга тодорхойлогдоно. Өөрөөр хэлбэл 1, 2, 3, ….. 23 хүртэл утганд MOD функцийг ашиглана. Үүнийг доорх зурагт үзүүлэв.

Дээрх зургаас үзэхэд B баганын утга өсөөд буурсан төлөвтэй харагдаж байна. Иймээс дээрх томьёог INDEX функцэд оруулая. Энэ тохиолдолд бидний өмнөх буруу томьёо дараах хэлбэрт шилжинэ. Доорх томьёог D1 нүдэнд оруулна. D1 нүдний утгыг N1 нүд хүртэл хуулах буюу copy/paste хийнэ.

=INDEX($A$2:$A$13,MOD($A$1+COLUMNS($D1:D$1),12))

Томьёоны үр дүнг дараах зурагт үзүүлэв.

Хэдийгээр томьёоны үр дүн зөв гарч байгаа хэдий ч 12 сар дээр алдаа гарч байна. Учир нь =MOD($A$1+COLUMNS($D1:D$1),12) томьёоны үр дүн 12 сар дээр 0 гэсэн утгыг авсан тул INDEX функц алдаа зааж байна. Энэ асуудлыг бид хялбархаан шийдэж чадна. Өөрөөр хэлбэл А1 нүдний утгыг 1-ээр бууруулаад, харин =MOD($A$1+COLUMNS($D1:D$1),12) томьёоны үр дүн дээр 1-ийг нэмээд өгчихөд тус томьёо 0 утга авахаа болино.

За ингээд эцсийн томьёог доор үзүүлэв. Тус томьёог D1 нүдэнд бичээд, N1 нүд хүртэл хуулна.

=INDEX($A$2:$A$13,MOD($A$1+COLUMNS($D1:D$1),12)+1)

Дээрх томьёоны үр дүнг доорх зурагт үзүүллээ.

За ингээд Динамик сар хийх томьёолол бэлэн боллоо. Энэхүү нийтлэлийг жоохон нуршаад тайлбарлсан байж магад. Гэхдээ нилээд төвөгтэй томьёолол сайтар уншаарай. Ойлгогдохгүй зүйлийг Сэтгэгдэл хэсгээр дамжуулан асууж болно. Та бүхэнд амжилт хүсье.

Сэтгэгдэл үлдээх

Таны имэйл хаягийг нийтлэхгүй. Шаардлагатай талбаруудыг * гэж тэмдэглэсэн

    1. Өө тийм байна. Уучилаарай. Гол алдаа нь A1 нүдэнд бичих =MATCH(C1,$A$2:$A$13,0) томьёог дутуу бичсэн байна. =MATCH(C1,$A$2:$A$13,0)-1 гэж бичигдэх ёстой. Алдааг минь олж өгсөнд баярлалаа.

Холбоотой нийтлэлүүд