Skip to main content

Kutools for Office — مجموعة واحدة. خمسة أدوات. أنجز المزيد.

كيفية البحث عن أول قيمة غير صفرية وإرجاع رأس العمود المقابل في Excel؟

Author Xiaoyang Last modified

عند العمل مع البيانات في Excel، من الشائع الحاجة إلى تحديد موضع أول إدخال غير صفري داخل صف وعرض رأس العمود المرتبط. على سبيل المثال، في مجموعة بيانات حيث يمثل كل صف عنصرًا أو شخصًا مختلفًا وتمثل الأعمدة الفترات الزمنية أو الفئات، قد ترغب في معرفة متى تظهر قيمة لأول مرة لكل صف. التحقق اليدوي من كل صف للعثور على أول قيمة غير صفرية يمكن أن يكون استهلاكيًا للوقت، خاصةً مع زيادة حجم البيانات. أتمتة عملية البحث هذه لا تحسن الكفاءة فحسب، بل تقلل أيضًا من الأخطاء، مما يجعل تحليلاتك أكثر موثوقية. يشرح هذا المقال طرقًا عملية متعددة لتحقيق هذا الهدف، بدءًا من استخدام صيغ Excel متعددة الاستخدامات إلى استخدام ماكرو VBA الذي يكون مفيدًا بشكل خاص لمجموعات البيانات الكبيرة أو التقارير المتكررة.

lookup first non-zero value and return corresponding column header


arrow blue right bubble ابحث عن أول قيمة غير صفرية وأرجع رأس العمود المقابل باستخدام صيغة

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

1. اختر خلية فارغة لعرض النتيجة؛ في هذا المثال، يتم استخدام الخلية K2.

=INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0))

2. بعد إدخال الصيغة، اضغط على Enter للتأكيد. ثم اختر K2 واستخدم مقبض التعبئة لسحب الصيغة لأسفل لتطبيقها على باقي الصفوف حسب الحاجة.

use a formula to lookup first non-zero value and return corresponding column header

ملاحظة: في الصيغة أعلاه، B1:I1 يشير إلى نطاق رؤوس الأعمدة التي تريد إرجاعها، وB2:I2 هو صف البيانات الذي تقوم بتحليله للعثور على أول قيمة غير صفرية.

إذا بدأت بياناتك في أعمدة أو صفوف مختلفة، تذكر تعديل نطاقات الصيغة وفقًا لذلك. أيضًا، تعمل هذه الصيغة بفعالية طالما يوجد على الأقل قيمة غير صفرية واحدة في كل صف تم تحليله؛ إذا كانت جميع القيم صفرية، ستعيد الصيغة خطأ. في مثل هذه الحالات، فكر في تغليف الصيغة في دالة IFERROR كالتالي: =IFERROR(INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0)),'No non-zero') لإرجاع رسالة مخصصة بدلاً من خطأ.

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

arrow blue right bubble استخدم ماكرو VBA للعثور على رأس العمود الخاص بأول قيمة غير صفرية في كل صف وإرجاعه

إذا كنت بحاجة غالبًا إلى تنفيذ مهمة البحث هذه عبر العديد من الصفوف أو على مجموعات بيانات كبيرة، أو إذا كنت ترغب في أتمتة العملية لزيادة الكفاءة، فإن استخدام ماكرو VBA يعد بديلاً عمليًا. هذه الطريقة مفيدة بشكل خاص لتوليد التقارير الدورية أو عند التعامل مع جداول البيانات التي تتغير حجمها بشكل متكرر. سيقوم الماكرو بالبحث في كل صف محدد عن أول قيمة غير صفرية وإرجاع رأس العمود المقابل إلى خلية مستهدفة.

1. انقر فوق علامة التبويب Developer > Visual Basic لفتح نافذة Microsoft Visual Basic for Applications. (إذا لم تكن علامة التبويب Developer مرئية، يمكنك إضافتها عبر File > Options > Customize Ribbon.) في محرر VBA، انقر فوق Insert > Module.

2. انسخ والصق الكود التالي لـ VBA في الوحدة الجديدة:

Sub LookupFirstNonZeroAndReturnHeader()
    Dim ws As Worksheet
    Dim dataRange As Range
    Dim headerRange As Range
    Dim outputCell As Range
    Dim r As Range
    Dim c As Range
    Dim firstNonZeroCol As Integer
    Dim i As Long
    Dim xTitleId As String
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set ws = Application.ActiveSheet
    Set dataRange = Application.InputBox("Select the data range (excluding headers):", xTitleId, Selection.Address, Type:=8)
    If dataRange Is Nothing Then Exit Sub
    Set headerRange = ws.Range(dataRange.Offset(-1, 0).Resize(1, dataRange.Columns.Count).Address)
    For i = 1 To dataRange.Rows.Count
        Set r = dataRange.Rows(i)
        firstNonZeroCol = 0
        
        For Each c In r.Columns
            If c.Value <> 0 And c.Value <> "" Then
                firstNonZeroCol = c.Column - dataRange.Columns(1).Column + 1
                Exit For
            End If
        Next c
        
        Set outputCell = r.Cells(1, r.Columns.Count + 1)
        
        If firstNonZeroCol > 0 Then
            outputCell.Value = headerRange.Cells(1, firstNonZeroCol).Value
        Else
            outputCell.Value = "No non-zero"
        End If
    Next i
    
    On Error GoTo 0
    MsgBox "Completed! Results are in the column to the right of your data.", vbInformation, "KutoolsforExcel"
End Sub

3. لتشغيل الماكرو، انقر فوق زر Run أو اضغط على مفتاح F5. ستظهر مربع حوار يطلب منك اختيار نطاق البيانات (باستثناء رؤوس الأعمدة). بعد تنفيذ الماكرو، سيتم ملء العمود الموجود مباشرة إلى يمين البيانات المحددة برأس أول قيمة غير صفرية لكل صف، أو رسالة 'No non-zero' إذا لم يتم العثور على أي قيمة غير صفرية.

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

ملاحظة: إذا واجهت أخطاء، تحقق من أن اختيارك يستثني صف الرأس ويشمل فقط صفوف البيانات.

a screenshot of kutools for excel ai

اكتشف سحر Excel مع Kutools AI

  • التنفيذ الذكي: قم بعمليات الخلية، وتحليل البيانات، وإنشاء المخططات - كل ذلك يتم من خلال أوامر بسيطة.
  • الصيغ المخصصة: قم بإنشاء صيغ مصممة خصيصًا لتسهيل سير عملك.
  • برمجة VBA: كتابة وتطبيق أكواد VBA بسهولة.
  • تفسير الصيغ: فهم الصيغ المعقدة بسهولة.
  • ترجمة النصوص: تجاوز الحواجز اللغوية داخل جداول البيانات الخاصة بك.
عزز قدرات Excel لديك باستخدام أدوات تعمل بالذكاء الاصطناعي. قم بالتنزيل الآن وعش تجربة الكفاءة كما لم يحدث من قبل!

أفضل أدوات الإنتاجية لمكتب العمل

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات اعتمادًا على: التنفيذ الذكي |  توليد الأكواد |  إنشاء الصيغ المخصصة |  تحليل البيانات وتوليد الرسوم البيانية |  استخدام Kutools Functions...
ميزات شائعة: البحث، تمييز أو وضع علامة على المكررات | حذف الصفوف الفارغة | دمج الأعمدة أو الخلايا بدون فقدان البيانات | تقريب بدون الصيغة...
بحث متقدم: بحث بمعايير متعددة VLookup | بحث بقيم متعددة VLookup | بحث في عدة ورقات VLookup | مطابقة غامضة...
قائمة منسدلة متقدمة: إنشاء قائمة منسدلة بسرعة | قائمة منسدلة معتمدة | قائمة منسدلة متعددة الاختيارات...
مدير الأعمدة: إضافة عدد محدد من الأعمدة | نقل الأعمدة | تبديل حالة إظهار الأعمدة المخفية | مقارنة النطاقات والأعمدة...
ميزات مميزة: التركيز على الشبكة | عرض التصميم | شريط الصيغ المحسن | مدير أدوات المصنف وورقة العمل | مكتبة النص التلقائي | منتقي التاريخ | دمج البيانات | تشفير/فك تشفير الخلايا | إرسال البريد الإلكتروني حسب الجدول | مرشح متقدم | تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض/مائل/يتوسطه خط...)...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ...) | أكثر من50 نوع رسم بياني (مخطط جانت، ...) | أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...) |19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ...) |12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...) |7 أدوات دمج وتقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...) | ... والمزيد
استخدم Kutools بلغتك المفضلة – يدعم الإنجليزية، الإسبانية، الألمانية، الفرنسية، الصينية، وأكثر من40 لغة أخرى!

عزز مهاراتك في Excel باستخدام Kutools لـ Excel، واختبر كفاءة غير مسبوقة. Kutools لـ Excel يوفر أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة الأكثر أهمية بالنسبة لك...


Office Tab يجلب واجهة التبويب إلى Office ويجعل عملك أسهل بكثير

  • تفعيل تحرير وقراءة عبر التبويبات في Word، Excel، PowerPoint، Publisher، Access، Visio وProject.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة في نفس النافذة، بدلاً من نوافذ مستقلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات اليومية من الفأرة!

جميع إضافات Kutools. مثبت واحد

حزمة Kutools for Office تجمع بين إضافات Excel وWord وOutlook وPowerPoint إضافة إلى Office Tab Pro، وهي مثالية للفرق التي تعمل عبر تطبيقات Office.

Excel Word Outlook Tabs PowerPoint
  • حزمة الكل في واحد — إضافات Excel وWord وOutlook وPowerPoint + Office Tab Pro
  • مثبّت واحد، ترخيص واحد — إعداد في دقائق (جاهز لـ MSI)
  • الأداء الأفضل معًا — إنتاجية مُبسطة عبر تطبيقات Office
  • تجربة كاملة لمدة30 يومًا — بدون تسجيل، بدون بطاقة ائتمان
  • قيمة رائعة — وفر مقارنة بشراء الإضافات بشكل منفرد