عدم تغییر فرمول در اکسل

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ali.b

    • 2014/01/12
    • 798

    عدم تغییر فرمول در اکسل

    سلام دوستان عزیز
    ی مشکل تقریبا بزرگی برام پیش اومده و اینه که ی تابع رو بای ی رنج خاصی از سلول ها مینویسیم اما وقتی یک ردیف ایجاد میکنیم خودکار این فرمول بست داده میشه به پایین!!!
    و دادهای جدید رو حساب نمیکنه چکار کنم با ایجاد یا حذف ردیف تابع نوشته شته منابع اون تغییر نکنن
    مثلا نوشتم
    کد:
    =counta([color=#a52a2a]d5[/color]:d10)
    اما وقتی ردیف جدید ایجاد میکنم این فرمول به این حالت عوض میشه
    کد:
    =counta([color=#0000cd]d6[/color]:d102)
    میخوام ثابت باشه و هر بلایی سر محتوای داخل شیتها میارم رنج دااخل فرمول ها تغییر نکنه

  • ali.b

    • 2014/01/12
    • 798

    #2
    مشکل اصلی این کد هست
    کد:
    =sum(if((d3:d50<>"")*(j3:j50=""),1,0))
    که هر بار ی ردیف در رنج 3 ایجاد میشه d3 , j3 ی واحد اضافه تر میشه
    درحالی که میخوام هیچ تغییری نکنن

    کامنت

    • misammisam
      مدير تالار حسابداری و اکسل

      • 2014/04/03
      • 892
      • 64.00

      #3
      نوشته اصلی توسط absorkhi
      مشکل اصلی این کد هست
      کد:
      =sum(if((d3:d50<>"")*(j3:j50=""),1,0))
      که هر بار ی ردیف در رنج 3 ایجاد میشه d3 , j3 ی واحد اضافه تر میشه
      درحالی که میخوام هیچ تغییری نکنن
      قبل هر محدوده اي كه ميخواي ثابت باشه و تغيير نكنه به علامت $ بايد بندازي ، مثلا :
      کد PHP:
      =sum(if((d$3:d50<>"")*(j$3:j50=""),1,0)) 
      فقط درست نفهميدم مشكلت وقتي ايجاد ميشه كه از table استفاده ميكني يا ميخواي كدتو با ماكرو بست بدي !؟
      اگه مشكلتون چيزي به غير از اينيه كه من فهميدم بفرمايين تا دقيقتر جواب داده بشه .
      sigpic

      کامنت

      • ali.b

        • 2014/01/12
        • 798

        #4
        نه دوست عزیز در table نیست همون محیط رنج اکسل هست وقتی من این فرمول رو مینویسم
        کد:
        [COLOR=#007700][FONT=monospace]=[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]sum[/FONT][/COLOR][COLOR=#007700][FONT=monospace](if(([/FONT][/COLOR][B][COLOR=#006400][FONT=monospace]d[/FONT][FONT=monospace]$[/FONT][FONT=monospace]3[/FONT][/COLOR][/B][COLOR=#007700][FONT=monospace]:[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]d50[/FONT][/COLOR][COLOR=#007700][FONT=monospace]<>[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]""[/FONT][/COLOR][COLOR=#007700][FONT=monospace])*([/FONT][/COLOR][B][COLOR=#006400][FONT=monospace]j[/FONT][FONT=monospace]$[/FONT][FONT=monospace]3[/FONT][/COLOR][/B][COLOR=#007700][FONT=monospace]:[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]j50[/FONT][/COLOR][COLOR=#007700][FONT=monospace]=[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]""[/FONT][/COLOR][COLOR=#007700][FONT=monospace]),[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]1[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace])) [/FONT][/COLOR]
        یعنی از ردیف 3 شروع کن تا 50 اما وقتی در ردیف 3 یک ردیف ایجاد میکنم به این حالت در میاد
        کد:
        [COLOR=#007700][FONT=monospace]=[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]sum[/FONT][/COLOR][COLOR=#007700][FONT=monospace](if(([/FONT][/COLOR][B][COLOR=#0000cd][FONT=monospace]d[/FONT][FONT=monospace]$[/FONT][FONT=monospace]4[/FONT][/COLOR][/B][COLOR=#007700][FONT=monospace]:[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]d50[/FONT][/COLOR][COLOR=#007700][FONT=monospace]<>[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]""[/FONT][/COLOR][COLOR=#007700][FONT=monospace])*([/FONT][/COLOR][B][COLOR=#0000cd][FONT=monospace]j[/FONT][FONT=monospace]$[/FONT][FONT=monospace]4[/FONT][/COLOR][/B][COLOR=#007700][FONT=monospace]:[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]j50[/FONT][/COLOR][COLOR=#007700][FONT=monospace]=[/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]""[/FONT][/COLOR][COLOR=#007700][FONT=monospace]),[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]1[/FONT][/COLOR][COLOR=#007700][FONT=monospace],[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]0[/FONT][/COLOR][COLOR=#007700][FONT=monospace])) [/FONT][/COLOR]
        همه حالتهایی که به ذهنم میرسید رو انجام دادم اما در هر بار ایجاد ردیف از محل شروع رنج یه واحد به اون اضافه میکنه

        برای این فرمول
        کد:
        [COLOR=#333333]=counta([/COLOR][COLOR=#a52a2a]d5[/COLOR][COLOR=#333333]:d10)[/COLOR]
        با این تغییر
        کد:
        [COLOR=#333333]=counta([/COLOR][COLOR=#a52a2a]d[/COLOR][COLOR=#333333]:d)[/COLOR]
        مشکل حل شد اما این حالت نمیدوم چرا برای اولی کار نمیکنه

        کامنت

        • علی فاطمی

          • 2014/02/17
          • 523
          • 51.00

          #5
          با سلام
          اینکه با افزایش ردیف قبل از ردیفی که فرمول در اون نوشته شده ، فرمول شما تغییر میکنه کاملا منطقیه .چون شما دارین موقعیت سلول رو تغییر میدین و اکسل بطور هوشمند خودش تغییرات رو لحاظ میکنه .
          ولی با کد زیر چون شما کل یک ستون رو در فرمولتون لحاظ می کنین ، با کم و زیاد شدن ردیف در فرمولتون تغییری ایجاد نمیشه.
          کد:
          =sum(if((d:d<>"")*(j:j=""),1,0))
          در دنیا فقط یک نفر وجود دارد که باید از او بهتر باشید و آن کسی نیست جز گذشته خودتان



          کامنت

          • misammisam
            مدير تالار حسابداری و اکسل

            • 2014/04/03
            • 892
            • 64.00

            #6
            خوب در اينصورت بايد از offset استفاده بكني ، مثلا به جاي d$3 بايد بزني
            کد PHP:
            OFFSET($A$1;3;3
            كه اينطوري ميشه
            کد PHP:
            =IF((OFFSET($A$1;3;3):D40<>"")*(OFFSET($A$1;3;9):J40="");1;0
            اگرم براي ستون j ميخواي ثابت باشه هم ميتوني همين كارو بكني
            sigpic

            کامنت

            چند لحظه..