ਸਮੱਗਰੀ
ਇਸ ਸਮੇਂ, ਮਾਈਕਰੋਸਾਫਟ ਐਕਸਲ ਕੋਲ ਫੰਕਸ਼ਨ ਵਿਜ਼ਾਰਡ ਵਿੰਡੋ - ਬਟਨ ਰਾਹੀਂ ਲਗਭਗ ਪੰਜ ਸੌ ਵਰਕਸ਼ੀਟ ਫੰਕਸ਼ਨ ਉਪਲਬਧ ਹਨ fx ਫਾਰਮੂਲਾ ਪੱਟੀ ਵਿੱਚ. ਇਹ ਇੱਕ ਬਹੁਤ ਹੀ ਵਿਨੀਤ ਸੈੱਟ ਹੈ, ਪਰ, ਫਿਰ ਵੀ, ਲਗਭਗ ਹਰ ਉਪਭੋਗਤਾ ਨੂੰ ਜਲਦੀ ਜਾਂ ਬਾਅਦ ਵਿੱਚ ਅਜਿਹੀ ਸਥਿਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ ਜਿੱਥੇ ਇਸ ਸੂਚੀ ਵਿੱਚ ਉਹ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਨਹੀਂ ਹੁੰਦਾ ਜਿਸਦੀ ਉਸਨੂੰ ਲੋੜ ਹੁੰਦੀ ਹੈ - ਬਸ ਕਿਉਂਕਿ ਇਹ ਐਕਸਲ ਵਿੱਚ ਨਹੀਂ ਹੈ।
ਹੁਣ ਤੱਕ, ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਦਾ ਇੱਕੋ ਇੱਕ ਤਰੀਕਾ ਮੈਕਰੋ ਸੀ, ਭਾਵ ਵਿਜ਼ੂਅਲ ਬੇਸਿਕ ਵਿੱਚ ਆਪਣਾ ਖੁਦ ਦਾ ਉਪਭੋਗਤਾ-ਪ੍ਰਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨ (UDF = ਉਪਭੋਗਤਾ ਪਰਿਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨ) ਲਿਖਣਾ, ਜਿਸ ਲਈ ਉਚਿਤ ਪ੍ਰੋਗਰਾਮਿੰਗ ਹੁਨਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਅਤੇ ਕਦੇ-ਕਦਾਈਂ ਇਹ ਆਸਾਨ ਨਹੀਂ ਹੁੰਦਾ। ਹਾਲਾਂਕਿ, ਨਵੀਨਤਮ Office 365 ਅਪਡੇਟਾਂ ਦੇ ਨਾਲ, ਸਥਿਤੀ ਬਿਹਤਰ ਲਈ ਬਦਲ ਗਈ ਹੈ - ਐਕਸਲ ਵਿੱਚ ਇੱਕ ਵਿਸ਼ੇਸ਼ "ਰੈਪਰ" ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ। LAMBDA. ਇਸਦੀ ਮਦਦ ਨਾਲ, ਤੁਹਾਡੇ ਆਪਣੇ ਫੰਕਸ਼ਨ ਬਣਾਉਣ ਦਾ ਕੰਮ ਹੁਣ ਆਸਾਨੀ ਨਾਲ ਅਤੇ ਸੁੰਦਰਤਾ ਨਾਲ ਹੱਲ ਕੀਤਾ ਗਿਆ ਹੈ।
ਆਉ ਹੇਠਾਂ ਦਿੱਤੀ ਉਦਾਹਰਣ ਵਿੱਚ ਇਸਦੀ ਵਰਤੋਂ ਦੇ ਸਿਧਾਂਤ ਨੂੰ ਵੇਖੀਏ.
ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਸੰਭਾਵਤ ਤੌਰ 'ਤੇ ਜਾਣਦੇ ਹੋ, ਐਕਸਲ ਵਿੱਚ ਕਈ ਤਾਰੀਖ ਪਾਰਸਿੰਗ ਫੰਕਸ਼ਨ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਇੱਕ ਦਿੱਤੀ ਮਿਤੀ ਲਈ ਦਿਨ, ਮਹੀਨੇ, ਹਫ਼ਤੇ ਅਤੇ ਸਾਲ ਦੀ ਸੰਖਿਆ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ। ਪਰ ਕਿਸੇ ਕਾਰਨ ਕਰਕੇ ਕੋਈ ਫੰਕਸ਼ਨ ਨਹੀਂ ਹੈ ਜੋ ਤਿਮਾਹੀ ਦੀ ਸੰਖਿਆ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ, ਜਿਸਦੀ ਅਕਸਰ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਠੀਕ ਹੈ? ਆਓ ਇਸ ਕਮੀ ਨੂੰ ਠੀਕ ਕਰੀਏ ਅਤੇ ਇਸ ਨਾਲ ਬਣਾਓ LAMBDA ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਆਪਣਾ ਨਵਾਂ ਫੰਕਸ਼ਨ.
ਕਦਮ 1. ਫਾਰਮੂਲਾ ਲਿਖੋ
ਆਉ ਇਸ ਤੱਥ ਦੇ ਨਾਲ ਸ਼ੁਰੂ ਕਰੀਏ ਕਿ ਹੱਥੀਂ ਆਮ ਤਰੀਕੇ ਨਾਲ ਅਸੀਂ ਇੱਕ ਸ਼ੀਟ ਸੈੱਲ ਵਿੱਚ ਇੱਕ ਫਾਰਮੂਲਾ ਲਿਖਾਂਗੇ ਜੋ ਗਣਨਾ ਕਰਦਾ ਹੈ ਕਿ ਸਾਨੂੰ ਕੀ ਚਾਹੀਦਾ ਹੈ. ਤਿਮਾਹੀ ਨੰਬਰ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਇਹ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਇਸ ਤਰ੍ਹਾਂ:
ਕਦਮ 2. LAMBDA ਵਿੱਚ ਸਮੇਟਣਾ ਅਤੇ ਟੈਸਟ ਕਰਨਾ
ਹੁਣ ਨਵਾਂ LAMBDA ਫੰਕਸ਼ਨ ਲਾਗੂ ਕਰਨ ਅਤੇ ਇਸ ਵਿੱਚ ਸਾਡੇ ਫਾਰਮੂਲੇ ਨੂੰ ਸਮੇਟਣ ਦਾ ਸਮਾਂ ਆ ਗਿਆ ਹੈ। ਫੰਕਸ਼ਨ ਸਿੰਟੈਕਸ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:
=LAMBDA(ਵੇਰੀਏਬਲ 1; ਵੇਰੀਏਬਲ 2; … ਵੇਰੀਏਬਲ ਐਨ ; ਸਮੀਕਰਨ)
ਜਿੱਥੇ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਵੇਰੀਏਬਲਾਂ ਦੇ ਨਾਮ ਪਹਿਲਾਂ ਸੂਚੀਬੱਧ ਕੀਤੇ ਗਏ ਹਨ, ਅਤੇ ਆਖਰੀ ਆਰਗੂਮੈਂਟ ਹਮੇਸ਼ਾ ਇੱਕ ਫਾਰਮੂਲਾ ਜਾਂ ਇੱਕ ਗਣਿਤ ਸਮੀਕਰਨ ਹੁੰਦਾ ਹੈ ਜੋ ਉਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਵੇਰੀਏਬਲ ਨਾਮ ਸੈੱਲ ਪਤਿਆਂ ਵਾਂਗ ਨਹੀਂ ਲੱਗਣੇ ਚਾਹੀਦੇ ਅਤੇ ਬਿੰਦੀਆਂ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ।
ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਸਿਰਫ ਇੱਕ ਵੇਰੀਏਬਲ ਹੋਵੇਗਾ - ਉਹ ਮਿਤੀ ਜਿਸ ਲਈ ਅਸੀਂ ਤਿਮਾਹੀ ਨੰਬਰ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਾਂ। ਚਲੋ ਇਸਦੇ ਲਈ ਵੇਰੀਏਬਲ ਨੂੰ ਕਾਲ ਕਰੀਏ, ਕਹੋ, ਡੀ. ਫਿਰ ਸਾਡੇ ਫਾਰਮੂਲੇ ਨੂੰ ਇੱਕ ਫੰਕਸ਼ਨ ਵਿੱਚ ਸਮੇਟਣਾ LAMBDA ਅਤੇ ਅਸਲੀ ਸੈੱਲ A2 ਦੇ ਪਤੇ ਨੂੰ ਇੱਕ ਫਰਜ਼ੀ ਵੇਰੀਏਬਲ ਨਾਮ ਨਾਲ ਬਦਲ ਕੇ, ਸਾਨੂੰ ਮਿਲਦਾ ਹੈ:
ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਅਜਿਹੇ ਪਰਿਵਰਤਨ ਤੋਂ ਬਾਅਦ, ਸਾਡਾ ਫਾਰਮੂਲਾ (ਅਸਲ ਵਿੱਚ, ਸਹੀ!) ਇੱਕ ਗਲਤੀ ਪੈਦਾ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਹੁਣ ਸੈੱਲ A2 ਤੋਂ ਅਸਲ ਤਾਰੀਖ ਇਸ ਵਿੱਚ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ। ਜਾਂਚ ਅਤੇ ਭਰੋਸੇ ਲਈ, ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਦੇ ਬਾਅਦ ਉਹਨਾਂ ਨੂੰ ਜੋੜ ਕੇ ਆਰਗੂਮੈਂਟਸ ਪਾਸ ਕਰ ਸਕਦੇ ਹੋ LAMBDA ਬਰੈਕਟਾਂ ਵਿੱਚ:
ਕਦਮ 3. ਇੱਕ ਨਾਮ ਬਣਾਓ
ਹੁਣ ਆਸਾਨ ਅਤੇ ਮਜ਼ੇਦਾਰ ਹਿੱਸੇ ਲਈ. ਅਸੀਂ ਖੋਲ੍ਹਦੇ ਹਾਂ ਨਾਮ ਪ੍ਰਬੰਧਕ ਟੈਬ ਫਾਰਮੂਲਾ (ਫਾਰਮੂਲੇ — ਨਾਮ ਪ੍ਰਬੰਧਕ) ਅਤੇ ਬਟਨ ਨਾਲ ਇੱਕ ਨਵਾਂ ਨਾਮ ਬਣਾਓ ਬਣਾਓ (ਬਣਾਓ). ਸਾਡੇ ਭਵਿੱਖ ਦੇ ਫੰਕਸ਼ਨ ਲਈ ਇੱਕ ਨਾਮ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਨ ਲਈ, ਨਾਮਕਵਰਤਲਾ), ਅਤੇ ਖੇਤਰ ਵਿੱਚ ਲਿੰਕ (ਹਵਾਲਾ) ਧਿਆਨ ਨਾਲ ਫਾਰਮੂਲਾ ਬਾਰ ਤੋਂ ਕਾਪੀ ਕਰੋ ਅਤੇ ਸਾਡੇ ਫੰਕਸ਼ਨ ਨੂੰ ਪੇਸਟ ਕਰੋ LAMBDA, ਸਿਰਫ਼ ਆਖਰੀ ਦਲੀਲ (A2) ਤੋਂ ਬਿਨਾਂ:
ਸਭ ਕੁਝ। 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਤੋਂ ਬਾਅਦ OK ਬਣਾਏ ਫੰਕਸ਼ਨ ਨੂੰ ਇਸ ਵਰਕਬੁੱਕ ਦੀ ਕਿਸੇ ਵੀ ਸ਼ੀਟ 'ਤੇ ਕਿਸੇ ਵੀ ਸੈੱਲ ਵਿੱਚ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ:
ਹੋਰ ਕਿਤਾਬਾਂ ਵਿੱਚ ਵਰਤੋ
LAMBDA ਅਤੇ ਡਾਇਨਾਮਿਕ ਐਰੇ
ਇੱਕ ਫੰਕਸ਼ਨ ਨਾਲ ਬਣਾਏ ਗਏ ਕਸਟਮ ਫੰਕਸ਼ਨ LAMBDA ਨਵੇਂ ਡਾਇਨਾਮਿਕ ਐਰੇ ਅਤੇ ਉਹਨਾਂ ਦੇ ਫੰਕਸ਼ਨਾਂ (ਫਿਲਟਰ ਕਰੋ, UNIK, ਗ੍ਰੇਡ) ਨੂੰ 2020 ਵਿੱਚ Microsoft Excel ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ।
ਮੰਨ ਲਓ ਕਿ ਅਸੀਂ ਇੱਕ ਨਵਾਂ ਉਪਭੋਗਤਾ-ਪ੍ਰਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਦੋ ਸੂਚੀਆਂ ਦੀ ਤੁਲਨਾ ਕਰੇਗਾ ਅਤੇ ਉਹਨਾਂ ਵਿੱਚ ਅੰਤਰ ਵਾਪਸ ਕਰੇਗਾ - ਪਹਿਲੀ ਸੂਚੀ ਦੇ ਉਹ ਤੱਤ ਜੋ ਦੂਜੀ ਵਿੱਚ ਨਹੀਂ ਹਨ। ਜ਼ਿੰਦਗੀ ਦਾ ਕੰਮ, ਹੈ ਨਾ? ਪਹਿਲਾਂ, ਇਸਦੇ ਲਈ ਉਹ ਜਾਂ ਤਾਂ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਨ a la ਵੀਪੀਆਰ (VLOOKUP), ਜਾਂ PivotTables, ਜਾਂ Power Query ਸਵਾਲ। ਹੁਣ ਤੁਸੀਂ ਇੱਕ ਫਾਰਮੂਲੇ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ:
ਅੰਗਰੇਜ਼ੀ ਸੰਸਕਰਣ ਵਿੱਚ ਇਹ ਹੋਵੇਗਾ:
=LAMBDA(a;b;ФИЛЬТР(a;СЧЁТЕСЛИ(b;a)=0))(A1:A6;C1:C10)
ਇੱਥੇ ਫੰਕਸ਼ਨ COUNTIF ਦੂਜੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੇ ਹਰੇਕ ਤੱਤ ਦੀ ਮੌਜੂਦਗੀ ਦੀ ਗਿਣਤੀ, ਅਤੇ ਫਿਰ ਫੰਕਸ਼ਨ ਨੂੰ ਗਿਣਦਾ ਹੈ ਫਿਲਟਰ ਕਰੋ ਉਹਨਾਂ ਵਿੱਚੋਂ ਸਿਰਫ਼ ਉਹਨਾਂ ਨੂੰ ਚੁਣਦਾ ਹੈ ਜਿਹਨਾਂ ਕੋਲ ਇਹ ਘਟਨਾਵਾਂ ਨਹੀਂ ਸਨ। ਵਿਚ ਇਸ ਢਾਂਚੇ ਨੂੰ ਲਪੇਟ ਕੇ LAMBDA ਅਤੇ ਇੱਕ ਨਾਮ ਦੇ ਨਾਲ ਇਸਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਨਾਮਿਤ ਰੇਂਜ ਬਣਾਉਣਾ, ਉਦਾਹਰਨ ਲਈ, ਖੋਜ ਵੰਡ - ਸਾਨੂੰ ਇੱਕ ਸੁਵਿਧਾਜਨਕ ਫੰਕਸ਼ਨ ਮਿਲੇਗਾ ਜੋ ਇੱਕ ਡਾਇਨਾਮਿਕ ਐਰੇ ਦੇ ਰੂਪ ਵਿੱਚ ਦੋ ਸੂਚੀਆਂ ਦੀ ਤੁਲਨਾ ਕਰਨ ਦਾ ਨਤੀਜਾ ਵਾਪਸ ਕਰਦਾ ਹੈ:
ਜੇਕਰ ਸਰੋਤ ਡੇਟਾ ਆਮ ਨਹੀਂ ਹੈ, ਪਰ "ਸਮਾਰਟ" ਟੇਬਲ ਹਨ, ਤਾਂ ਸਾਡਾ ਫੰਕਸ਼ਨ ਵੀ ਬਿਨਾਂ ਕਿਸੇ ਸਮੱਸਿਆ ਦੇ ਹੱਲ ਕਰੇਗਾ:
ਇੱਕ ਹੋਰ ਉਦਾਹਰਨ ਹੈ ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਟੈਕਸਟ ਨੂੰ XML ਵਿੱਚ ਬਦਲ ਕੇ ਅਤੇ ਫਿਰ ਇਸ ਨੂੰ ਸੈੱਲ ਦੁਆਰਾ FILTER.XML ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਾਰਸ ਕਰਨਾ ਜੋ ਅਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਪਾਰਸ ਕੀਤਾ ਹੈ। ਇਸ ਗੁੰਝਲਦਾਰ ਫਾਰਮੂਲੇ ਨੂੰ ਹਰ ਵਾਰ ਹੱਥੀਂ ਦੁਬਾਰਾ ਨਾ ਬਣਾਉਣ ਲਈ, ਇਸਨੂੰ LAMBDA ਵਿੱਚ ਸਮੇਟਣਾ ਅਤੇ ਇਸਦੇ ਅਧਾਰ ਤੇ ਇੱਕ ਗਤੀਸ਼ੀਲ ਰੇਂਜ ਬਣਾਉਣਾ ਆਸਾਨ ਹੋਵੇਗਾ, ਭਾਵ ਇੱਕ ਨਵਾਂ ਸੰਖੇਪ ਅਤੇ ਸੁਵਿਧਾਜਨਕ ਫੰਕਸ਼ਨ, ਇਸਦਾ ਨਾਮ ਦੇਣਾ, ਉਦਾਹਰਨ ਲਈ, RAZDTEXT:
ਇਸ ਫੰਕਸ਼ਨ ਦਾ ਪਹਿਲਾ ਆਰਗੂਮੈਂਟ ਸਰੋਤ ਟੈਕਸਟ ਵਾਲਾ ਸੈੱਲ ਹੋਵੇਗਾ, ਅਤੇ ਦੂਜਾ - ਵੱਖ ਕਰਨ ਵਾਲਾ ਅੱਖਰ, ਅਤੇ ਇਹ ਇੱਕ ਹਰੀਜੱਟਲ ਡਾਇਨਾਮਿਕ ਐਰੇ ਦੇ ਰੂਪ ਵਿੱਚ ਨਤੀਜਾ ਵਾਪਸ ਕਰੇਗਾ। ਫੰਕਸ਼ਨ ਕੋਡ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਹੋਵੇਗਾ:
=LAMBDA(t;d; TRANSPOSE(FILTER.XML(“
ਉਦਾਹਰਨਾਂ ਦੀ ਸੂਚੀ ਬੇਅੰਤ ਹੈ - ਕਿਸੇ ਵੀ ਸਥਿਤੀ ਵਿੱਚ ਜਿੱਥੇ ਤੁਹਾਨੂੰ ਅਕਸਰ ਉਹੀ ਲੰਬੇ ਅਤੇ ਬੋਝਲ ਫਾਰਮੂਲੇ ਵਿੱਚ ਦਾਖਲ ਹੋਣਾ ਪੈਂਦਾ ਹੈ, LAMBDA ਫੰਕਸ਼ਨ ਜੀਵਨ ਨੂੰ ਧਿਆਨ ਨਾਲ ਆਸਾਨ ਬਣਾ ਦੇਵੇਗਾ।
ਅੱਖਰਾਂ ਦੀ ਆਵਰਤੀ ਗਣਨਾ
ਪਿਛਲੀਆਂ ਸਾਰੀਆਂ ਉਦਾਹਰਣਾਂ ਨੇ LAMBDA ਫੰਕਸ਼ਨ ਦਾ ਸਿਰਫ ਇੱਕ, ਸਭ ਤੋਂ ਸਪੱਸ਼ਟ, ਪੱਖ ਦਿਖਾਇਆ ਹੈ - ਇਸ ਵਿੱਚ ਲੰਬੇ ਫਾਰਮੂਲੇ ਨੂੰ ਸਮੇਟਣ ਅਤੇ ਉਹਨਾਂ ਦੇ ਇੰਪੁੱਟ ਨੂੰ ਸਰਲ ਬਣਾਉਣ ਲਈ "ਰੈਪਰ" ਵਜੋਂ ਇਸਦੀ ਵਰਤੋਂ। ਵਾਸਤਵ ਵਿੱਚ, LAMBDA ਦਾ ਇੱਕ ਹੋਰ, ਬਹੁਤ ਡੂੰਘਾ, ਪੱਖ ਹੈ ਜੋ ਇਸਨੂੰ ਲਗਭਗ ਇੱਕ ਪੂਰੀ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।
ਤੱਥ ਇਹ ਹੈ ਕਿ LAMBDA ਫੰਕਸ਼ਨਾਂ ਦੀ ਇੱਕ ਬੁਨਿਆਦੀ ਮਹੱਤਵਪੂਰਨ ਵਿਸ਼ੇਸ਼ਤਾ ਉਹਨਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਯੋਗਤਾ ਹੈ ਮੁੜ - ਗਣਨਾ ਦਾ ਤਰਕ, ਜਦੋਂ ਗਣਨਾ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਫੰਕਸ਼ਨ ਆਪਣੇ ਆਪ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ। ਆਦਤ ਤੋਂ, ਇਹ ਡਰਾਉਣਾ ਲੱਗ ਸਕਦਾ ਹੈ, ਪਰ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ, ਦੁਹਰਾਉਣਾ ਇੱਕ ਆਮ ਚੀਜ਼ ਹੈ. ਵਿਜ਼ੂਅਲ ਬੇਸਿਕ ਵਿੱਚ ਮੈਕਰੋ ਵਿੱਚ ਵੀ, ਤੁਸੀਂ ਇਸਨੂੰ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਹੁਣ, ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ, ਇਹ ਐਕਸਲ ਵਿੱਚ ਆ ਗਿਆ ਹੈ। ਆਉ ਇਸ ਤਕਨੀਕ ਨੂੰ ਇੱਕ ਪ੍ਰੈਕਟੀਕਲ ਉਦਾਹਰਣ ਨਾਲ ਸਮਝਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੀਏ।
ਮੰਨ ਲਓ ਕਿ ਅਸੀਂ ਇੱਕ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਸਰੋਤ ਟੈਕਸਟ ਤੋਂ ਸਾਰੇ ਦਿੱਤੇ ਅੱਖਰਾਂ ਨੂੰ ਹਟਾ ਦੇਵੇਗਾ। ਅਜਿਹੇ ਫੰਕਸ਼ਨ ਦੀ ਉਪਯੋਗਤਾ, ਮੈਨੂੰ ਲਗਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਇਹ ਸਾਬਤ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਨਹੀਂ ਹੈ - ਇਸਦੀ ਮਦਦ ਨਾਲ ਕੂੜੇ ਹੋਏ ਇਨਪੁਟ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਬਹੁਤ ਸੁਵਿਧਾਜਨਕ ਹੋਵੇਗਾ, ਠੀਕ?
ਹਾਲਾਂਕਿ, ਪਿਛਲੀਆਂ, ਗੈਰ-ਆਵਰਤੀ ਉਦਾਹਰਣਾਂ ਦੇ ਮੁਕਾਬਲੇ, ਦੋ ਮੁਸ਼ਕਲਾਂ ਸਾਡੀ ਉਡੀਕ ਕਰ ਰਹੀਆਂ ਹਨ।
- ਸਾਨੂੰ ਆਪਣੇ ਫੰਕਸ਼ਨ ਦਾ ਕੋਡ ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਨਾਮ ਲੈ ਕੇ ਆਉਣਾ ਹੋਵੇਗਾ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ, ਇਹ ਨਾਮ ਪਹਿਲਾਂ ਹੀ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।
- ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਅਜਿਹੇ ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨ ਨੂੰ ਦਾਖਲ ਕਰਨਾ ਅਤੇ LAMBDA (ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਪਹਿਲਾਂ ਕੀਤਾ ਸੀ) ਦੇ ਬਾਅਦ ਬਰੈਕਟਾਂ ਵਿੱਚ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਕੇ ਇਸਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ। ਤੁਹਾਨੂੰ ਤੁਰੰਤ "ਸਕ੍ਰੈਚ ਤੋਂ" ਵਿੱਚ ਇੱਕ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਹੋਵੇਗਾ ਨਾਮ ਪ੍ਰਬੰਧਕ (ਨਾਮ ਮੈਨੇਜਰ).
ਚਲੋ ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰੀਏ, ਕਹੋ, CLEAN ਅਤੇ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਇਸ ਵਿੱਚ ਦੋ ਆਰਗੂਮੈਂਟ ਹੋਣ - ਟੈਕਸਟ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਲਈ ਅਤੇ ਇੱਕ ਟੈਕਸਟ ਸਤਰ ਦੇ ਰੂਪ ਵਿੱਚ ਬਾਹਰ ਕੀਤੇ ਅੱਖਰਾਂ ਦੀ ਸੂਚੀ:
ਆਉ ਟੈਬ ਉੱਤੇ, ਜਿਵੇਂ ਅਸੀਂ ਪਹਿਲਾਂ ਬਣਾਇਆ ਸੀ, ਬਣਾਉ ਫਾਰਮੂਲਾ в ਨਾਮ ਮੈਨੇਜਰ ਨਾਮ ਦੀ ਰੇਂਜ, ਇਸਨੂੰ CLEAR ਨਾਮ ਦਿਓ ਅਤੇ ਖੇਤਰ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ ਸੀਮਾ ਹੇਠ ਦਿੱਤੀ ਉਸਾਰੀ:
=LAMBDA(t;d;IF(d="";t;CLEAR(SUBSTITUTE(t;LEFT(d);"");MID(d;2;255))))
ਇੱਥੇ ਵੇਰੀਏਬਲ t ਅਸਲੀ ਟੈਕਸਟ ਹੈ ਜਿਸ ਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਜਾਣਾ ਹੈ, ਅਤੇ d ਮਿਟਾਏ ਜਾਣ ਵਾਲੇ ਅੱਖਰਾਂ ਦੀ ਸੂਚੀ ਹੈ।
ਇਹ ਸਭ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ:
ਪੜਾਅ 1
ਟੁਕੜਾ SUBSTITUTE(t;LEFT(d);""), ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕਦੇ ਹੋ, ਸਰੋਤ ਟੈਕਸਟ t ਵਿੱਚ ਮਿਟਾਏ ਜਾਣ ਵਾਲੇ ਸੈੱਟ d ਤੋਂ ਖੱਬੇ ਅੱਖਰ ਤੋਂ ਪਹਿਲੇ ਅੱਖਰ ਨੂੰ ਇੱਕ ਖਾਲੀ ਟੈਕਸਟ ਸਤਰ ਨਾਲ ਬਦਲਦਾ ਹੈ, ਭਾਵ "ਹਟਾਉਂਦਾ ਹੈ" ਏ”। ਇੱਕ ਵਿਚਕਾਰਲੇ ਨਤੀਜੇ ਵਜੋਂ, ਸਾਨੂੰ ਮਿਲਦਾ ਹੈ:
Vsh zkz n 125 ਰੂਬਲ.
ਪੜਾਅ 2
ਫਿਰ ਫੰਕਸ਼ਨ ਆਪਣੇ ਆਪ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ ਅਤੇ ਇਨਪੁਟ (ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ) ਦੇ ਰੂਪ ਵਿੱਚ ਉਹ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਜੋ ਪਿਛਲੇ ਪੜਾਅ ਵਿੱਚ ਸਫਾਈ ਕਰਨ ਤੋਂ ਬਾਅਦ ਬਚਿਆ ਹੈ, ਅਤੇ ਦੂਜਾ ਆਰਗੂਮੈਂਟ ਪਹਿਲੇ ਤੋਂ ਨਹੀਂ, ਸਗੋਂ ਦੂਜੇ ਅੱਖਰ ਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਬਾਹਰ ਕੀਤੇ ਅੱਖਰਾਂ ਦੀ ਸਤਰ ਹੈ, ਜਿਵੇਂ ਕਿ “BVGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYA। ,” ਸ਼ੁਰੂਆਤੀ “A” ਤੋਂ ਬਿਨਾਂ – ਇਹ MID ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪਹਿਲਾਂ ਵਾਂਗ, ਫੰਕਸ਼ਨ ਬਾਕੀ ਬਚੇ (B) ਦੇ ਖੱਬੇ ਤੋਂ ਪਹਿਲਾ ਅੱਖਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਦਿੱਤੇ ਗਏ ਟੈਕਸਟ (Zkz n 125 ਰੂਬਲ) ਵਿੱਚ ਇੱਕ ਖਾਲੀ ਸਤਰ ਨਾਲ ਬਦਲਦਾ ਹੈ - ਅਸੀਂ ਇੱਕ ਵਿਚਕਾਰਲੇ ਨਤੀਜੇ ਵਜੋਂ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ:
125 ਰੁ.
ਪੜਾਅ 3
ਫੰਕਸ਼ਨ ਆਪਣੇ ਆਪ ਨੂੰ ਦੁਬਾਰਾ ਕਾਲ ਕਰਦਾ ਹੈ, ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਦੇ ਤੌਰ 'ਤੇ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਕਿ ਪਿਛਲੀ ਦੁਹਰਾਓ (Bsh zkz n 125 ru.) 'ਤੇ ਸਾਫ਼ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਟੈਕਸਟ ਵਿੱਚੋਂ ਕੀ ਬਚਿਆ ਹੈ, ਅਤੇ ਦੂਜੀ ਦਲੀਲ ਦੇ ਤੌਰ 'ਤੇ, ਬਾਹਰ ਕੀਤੇ ਅੱਖਰਾਂ ਦੇ ਸੈੱਟ ਨੂੰ ਇੱਕ ਹੋਰ ਅੱਖਰ ਦੁਆਰਾ ਕੱਟਿਆ ਗਿਆ ਹੈ। ਖੱਬੇ ਪਾਸੇ, ਭਾਵ "VGDEEGZIKLMNOPRSTUFHTSCHSHSHCHYYYUYA.", ਸ਼ੁਰੂਆਤੀ "B" ਤੋਂ ਬਿਨਾਂ। ਫਿਰ ਇਹ ਦੁਬਾਰਾ ਇਸ ਸੈੱਟ ਤੋਂ ਖੱਬੇ (B) ਤੋਂ ਪਹਿਲਾ ਅੱਖਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਟੈਕਸਟ ਤੋਂ ਹਟਾ ਦਿੰਦਾ ਹੈ - ਸਾਨੂੰ ਮਿਲਦਾ ਹੈ:
sh zkz n 125 ru.
ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ - ਮੈਨੂੰ ਉਮੀਦ ਹੈ ਕਿ ਤੁਸੀਂ ਇਹ ਵਿਚਾਰ ਪ੍ਰਾਪਤ ਕਰੋਗੇ। ਹਰੇਕ ਦੁਹਰਾਓ ਦੇ ਨਾਲ, ਹਟਾਏ ਜਾਣ ਵਾਲੇ ਅੱਖਰਾਂ ਦੀ ਸੂਚੀ ਖੱਬੇ ਪਾਸੇ ਕੱਟ ਦਿੱਤੀ ਜਾਵੇਗੀ, ਅਤੇ ਅਸੀਂ ਸੈੱਟ ਤੋਂ ਅਗਲੇ ਅੱਖਰ ਦੀ ਖੋਜ ਕਰਾਂਗੇ ਅਤੇ ਇੱਕ ਵੋਇਡ ਨਾਲ ਬਦਲਾਂਗੇ।
ਜਦੋਂ ਸਾਰੇ ਅੱਖਰ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ, ਸਾਨੂੰ ਲੂਪ ਤੋਂ ਬਾਹਰ ਆਉਣ ਦੀ ਲੋੜ ਪਵੇਗੀ - ਇਹ ਭੂਮਿਕਾ ਸਿਰਫ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ IF (ਜੇ), ਜਿਸ ਵਿੱਚ ਸਾਡਾ ਡਿਜ਼ਾਈਨ ਲਪੇਟਿਆ ਹੋਇਆ ਹੈ। ਜੇਕਰ ਮਿਟਾਉਣ ਲਈ ਕੋਈ ਅੱਖਰ ਨਹੀਂ ਬਚੇ ਹਨ (d=””), ਤਾਂ ਫੰਕਸ਼ਨ ਨੂੰ ਹੁਣ ਆਪਣੇ ਆਪ ਨੂੰ ਕਾਲ ਨਹੀਂ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਪਰ ਇਸ ਦੇ ਅੰਤਮ ਰੂਪ ਵਿੱਚ ਕਲੀਅਰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਟੈਕਸਟ ਨੂੰ ਵਾਪਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ (ਵੇਰੀਏਬਲ t)।
ਸੈੱਲਾਂ ਦਾ ਆਵਰਤੀ ਦੁਹਰਾਓ
ਇਸੇ ਤਰ੍ਹਾਂ, ਤੁਸੀਂ ਇੱਕ ਦਿੱਤੀ ਰੇਂਜ ਵਿੱਚ ਸੈੱਲਾਂ ਦੀ ਇੱਕ ਵਾਰ-ਵਾਰ ਗਣਨਾ ਨੂੰ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ। ਮੰਨ ਲਓ ਅਸੀਂ ਇੱਕ lambda ਫੰਕਸ਼ਨ ਨਾਮਕ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਬਦਲੀ ਸੂਚੀ ਇੱਕ ਦਿੱਤੀ ਹਵਾਲਾ ਸੂਚੀ ਦੇ ਅਨੁਸਾਰ ਸਰੋਤ ਟੈਕਸਟ ਵਿੱਚ ਟੁਕੜਿਆਂ ਦੀ ਥੋਕ ਤਬਦੀਲੀ ਲਈ। ਨਤੀਜਾ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ:
ਉਹ. ਸਾਡੇ ਸਮਾਗਮ ਵਿੱਚ ਬਦਲੀ ਸੂਚੀ ਤਿੰਨ ਦਲੀਲਾਂ ਹੋਣਗੀਆਂ:
- ਪ੍ਰਕਿਰਿਆ ਲਈ ਟੈਕਸਟ ਵਾਲਾ ਸੈੱਲ (ਸਰੋਤ ਪਤਾ)
- ਲੁੱਕਅੱਪ ਤੋਂ ਖੋਜਣ ਲਈ ਮੁੱਲਾਂ ਵਾਲੇ ਕਾਲਮ ਦਾ ਪਹਿਲਾ ਸੈੱਲ
- ਲੁੱਕਅਪ ਤੋਂ ਬਦਲਣ ਵਾਲੇ ਮੁੱਲਾਂ ਦੇ ਨਾਲ ਕਾਲਮ ਦਾ ਪਹਿਲਾ ਸੈੱਲ
ਫੰਕਸ਼ਨ ਨੂੰ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਉੱਪਰ ਤੋਂ ਹੇਠਾਂ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਖੱਬੇ ਕਾਲਮ ਤੋਂ ਕ੍ਰਮਵਾਰ ਸਾਰੇ ਵਿਕਲਪਾਂ ਨੂੰ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ ਲਭਣ ਲਈ ਸੱਜੇ ਕਾਲਮ ਤੋਂ ਸੰਬੰਧਿਤ ਵਿਕਲਪਾਂ ਲਈ ਬਦਲ. ਤੁਸੀਂ ਇਸਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਰਿਕਰਸਿਵ ਲੈਂਬਡਾ ਫੰਕਸ਼ਨ ਨਾਲ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ:
ਹਰੇਕ ਦੁਹਰਾਅ 'ਤੇ ਹੇਠਾਂ ਸ਼ਿਫਟ ਕਰਨਾ ਇੱਕ ਸਟੈਂਡਰਡ ਐਕਸਲ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਡਿਸਪੋਜ਼ਲ (ਆਫਸੈੱਟ), ਜਿਸ ਵਿੱਚ ਇਸ ਕੇਸ ਵਿੱਚ ਤਿੰਨ ਆਰਗੂਮੈਂਟ ਹਨ - ਅਸਲ ਰੇਂਜ, ਰੋ ਸ਼ਿਫਟ (1) ਅਤੇ ਕਾਲਮ ਸ਼ਿਫਟ (0)।
ਖੈਰ, ਜਿਵੇਂ ਹੀ ਅਸੀਂ ਡਾਇਰੈਕਟਰੀ (n = “”) ਦੇ ਅੰਤ 'ਤੇ ਪਹੁੰਚਦੇ ਹਾਂ, ਸਾਨੂੰ ਆਵਰਤੀ ਨੂੰ ਖਤਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ - ਅਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਕਾਲ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹਾਂ ਅਤੇ ਸਰੋਤ ਟੈਕਸਟ ਵੇਰੀਏਬਲ ਟੀ ਵਿੱਚ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਤੋਂ ਬਾਅਦ ਜੋ ਇਕੱਠਾ ਹੋਇਆ ਹੈ ਉਸਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੇ ਹਾਂ।
ਇਹ ਸਭ ਹੈ. ਕੋਈ ਗੁੰਝਲਦਾਰ ਮੈਕਰੋ ਜਾਂ ਪਾਵਰ ਕਿਊਰੀ ਸਵਾਲ ਨਹੀਂ - ਸਾਰਾ ਕੰਮ ਇੱਕ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਹੱਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
- ਐਕਸਲ ਦੇ ਨਵੇਂ ਡਾਇਨਾਮਿਕ ਐਰੇ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰੀਏ: ਫਿਲਟਰ, SORT, UNIC
- SUBSTITUTE ਫੰਕਸ਼ਨ ਨਾਲ ਟੈਕਸਟ ਨੂੰ ਬਦਲਣਾ ਅਤੇ ਸਾਫ਼ ਕਰਨਾ
- VBA ਵਿੱਚ ਮੈਕਰੋ ਅਤੇ ਉਪਭੋਗਤਾ-ਪ੍ਰਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨਾਂ (UDFs) ਬਣਾਉਣਾ