[Excel] صيغة إكسيل للإشارة إلى "سيل تو ذي ليفت"



Answers

وأقصر إصدار متوافق هو:

=INDIRECT("RC[-1]",0)

"أرسي [-1]" تعني عمود واحد إلى اليسار. "R [1] C [-1]" أسفل اليسار.

والمعلمة الثانية 0 تعني أن المعلمة الأولى تفسر باستخدام تدوين R1C1.

الخيارات الأخرى:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

طويلة جدا في رأيي. ولكن مفيدة إذا كانت القيمة النسبية دينامية / مشتقة من خلية أخرى. على سبيل المثال:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)

الخيار الأكثر بسيطة:

= RC[-1]

لديه العيب الذي تحتاج إلى تشغيل التدوين R1C1 باستخدام الخيارات، وهو عدم الذهاب عندما الآخرين لديهم لاستخدام التفوق.

Question

أنا أحاول أن أفعل التنسيق الشرطي بحيث لون الخلية سوف تتغير إذا كانت القيمة مختلفة عن القيمة في الخلية اليسرى منه (كل عمود هو شهر، في كل صف هي النفقات على كائن معين.أريد أن رصد يتغير بسهولة في الأسعار على مدى أشهر.)

أستطيع أن أفعل ذلك في الخلية وشكل-اسحبه، ولكن أود أن صيغة عامة لتطبيق على ورقة العمل بأكملها.

شكر!




عند إنشاء وظيفة تعريف المستخدم ، اكتشفت أن الإجابات الأخرى التي تنطوي على وظائف OFFSET و INDIRECT لا يمكن تطبيقها.

بدلا من ذلك، يجب عليك استخدام Application.Caller للإشارة إلى الخلية التي تم استخدام دالة تعريف المستخدم (أودف) فيها. في الخطوة الثانية، تقوم بتحويل فهرس العمود إلى اسم العمود المقابل.
وأخيرا، يمكنك الإشارة إلى الخلية اليسرى باستخدام دالة المدى النشط لورقة العمل.

Function my_user_defined_function(argument1, argument2)
    ' Way to convert a column number to its name copied from 
    ' http://.com/a/10107264
    ' Answer by Siddarth Rout (http://.com/users/1140579/siddharth-rout)
    ' License (if applicable due to the small amount of code): CC BY-SA 3.0
    colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1)

    rowNumber = Application.Caller(1).Row

    left_cell_value = ActiveSheet.Range(colName & rowNumber).Value

    ' Now do something with left_cell_value



أنا تعثرت على هذا الموضوع لأنني أردت أن تشير دائما إلى "الخلية إلى اليسار" ولكن بشكل متعمد بطريقة غير متقلبة (أي أوفست، غير المباشرة والكوارث مماثلة). تبحث على شبكة الإنترنت صعودا وهبوطا، لا إجابات. (هذا الموضوع لا يقدم في الواقع إجابة إما.) بعد بعض ترقيع حول أنا تعثرت على الطريقة الأكثر إثارة للدهشة، والتي أود أن أشارك مع هذا المجتمع:

لنفرض قيمة البدء من 100 في E6. لنفترض أنني أدخل دلتا لهذه القيمة في F5، ويقول 5. ثم حساب قيمة استمرار (105) في F6 = E6 + F5. إذا كنت ترغب في إضافة خطوة أخرى، من السهل: مجرد نسخ العمود F إلى العمود G وإدخال دلتا جديدة في G5.

هذا هو ما نقوم به، بشكل دوري. كل عمود لديه تاريخ وهذه التواريخ يجب أن يكون في الترتيب الزمني (للمساعدة في ماتش الخ). كل ذلك يحدث في كثير من الأحيان أن ننسى أن تدخل خطوة. الآن افترض أنك تريد إدراج عمود بين F و G (للحاق بركب الحذف الخاص بك) ونسخ F في G الجديد (لإعادة صياغة صيغة استمرار). هذه ليست قصيرة من كارثة كاملة. تحاول ذلك - H6 سوف أقول الآن = F6 + H5 وليس (كما أننا في حاجة إليها تماما ل) = G6 + H5. (سيكون G6 الجديد صحيحا.)

ولإجراء هذا العمل، يمكننا أن نلغي هذه العملية الحسابية بطريقة أكثر إثارة للدهشة F6 = إندكس ($ E6: F6؛ 1؛ الأعمدة ($ E1: F1) -1) F5. نسخ الحق وتحصل على G6 = إندكس ($ E6: G6؛ 1؛ الأعمدة ($ E1: G1) -1) + G5.

هذا يجب أن لا تعمل، أليس كذلك؟ مرجع دائري، بشكل واضح! محاولة بها وتكون عن دهشتها. يبدو أن إكسيل يدرك أنه على الرغم من أن نطاق إندكس يمتد إلى الخلية التي نقوم بإعادة حسابها، إلا أن الخلية نفسها لا تعالج من قبل إندكس وبالتالي فهي لا تنشئ مرجع دائري.

حتى الآن أنا المنزل والجافة. إدراج عمود بين F و G ونحن نحصل بالضبط ما نحتاج إليه: ستستمر قيمة استمرار في H القديم يعود إلى قيمة استمرار أدرجناها في G.




إذا قمت بتغيير مرجع الخلية لاستخدام التدوين R1C1 (أدوات | خيارات، علامة التبويب عام)، ثم يمكنك استخدام تدوين بسيط ولصقه في أي خلية.

الآن الصيغة الخاصة بك ببساطة:

=RC[-1]



بدلا من كتابة طويلة جدا:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

يمكنك ببساطة كتابة:

=OFFSET(*Name of your Cell*,0,-1)

وهكذا على سبيل المثال يمكنك الكتابة في الخلية B2 :

=OFFSET(B2,0,-1)

للإشارة إلى الخلية B1

لا يزال بفضل جيسون الشباب !! لم أكن قد حان أبدا مع هذا الحل دون إجابتك!






Links