كيفية البحث عن أول قيمة غير صفرية وإرجاع رأس العمود المقابل في Excel؟
عند العمل مع البيانات في Excel، من الشائع الحاجة إلى تحديد موضع أول إدخال غير صفري داخل صف وعرض رأس العمود المرتبط. على سبيل المثال، في مجموعة بيانات حيث يمثل كل صف عنصرًا أو شخصًا مختلفًا وتمثل الأعمدة الفترات الزمنية أو الفئات، قد ترغب في معرفة متى تظهر قيمة لأول مرة لكل صف. التحقق اليدوي من كل صف للعثور على أول قيمة غير صفرية يمكن أن يكون استهلاكيًا للوقت، خاصةً مع زيادة حجم البيانات. أتمتة عملية البحث هذه لا تحسن الكفاءة فحسب، بل تقلل أيضًا من الأخطاء، مما يجعل تحليلاتك أكثر موثوقية. يشرح هذا المقال طرقًا عملية متعددة لتحقيق هذا الهدف، بدءًا من استخدام صيغ Excel متعددة الاستخدامات إلى استخدام ماكرو VBA الذي يكون مفيدًا بشكل خاص لمجموعات البيانات الكبيرة أو التقارير المتكررة.
- ابحث عن أول قيمة غير صفرية وأرجع رأس العمود المقابل باستخدام صيغة
- استخدم ماكرو VBA للعثور على رأس العمود الخاص بأول قيمة غير صفرية في كل صف وإرجاعه
ابحث عن أول قيمة غير صفرية وأرجع رأس العمود المقابل باستخدام صيغة
لتحديد رأس العمود في صف معين حيث تظهر أول قيمة غير صفرية بفعالية، يمكنك استخدام صيغة مدمجة في Excel. هذا النهج مناسب بشكل خاص لمجموعات البيانات صغيرة إلى متوسطة الحجم حيث تكون إعادة الحساب في الوقت الفعلي وسهولة الإعداد مهمة.
1. اختر خلية فارغة لعرض النتيجة؛ في هذا المثال، يتم استخدام الخلية K2.
=INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0))
2. بعد إدخال الصيغة، اضغط على Enter للتأكيد. ثم اختر K2 واستخدم مقبض التعبئة لسحب الصيغة لأسفل لتطبيقها على باقي الصفوف حسب الحاجة.
ملاحظة: في الصيغة أعلاه، B1:I1 يشير إلى نطاق رؤوس الأعمدة التي تريد إرجاعها، وB2:I2 هو صف البيانات الذي تقوم بتحليله للعثور على أول قيمة غير صفرية.
إذا بدأت بياناتك في أعمدة أو صفوف مختلفة، تذكر تعديل نطاقات الصيغة وفقًا لذلك. أيضًا، تعمل هذه الصيغة بفعالية طالما يوجد على الأقل قيمة غير صفرية واحدة في كل صف تم تحليله؛ إذا كانت جميع القيم صفرية، ستعيد الصيغة خطأ. في مثل هذه الحالات، فكر في تغليف الصيغة في دالة IFERROR
كالتالي: =IFERROR(INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0)),'No non-zero')
لإرجاع رسالة مخصصة بدلاً من خطأ.
هذا الحل المستند إلى الصيغة مثالي عندما تريد نتائج محدثة ديناميكيًا فورًا عند تغيير بيانات الإدخال. ومع ذلك، بالنسبة لمجموعات البيانات الكبيرة جدًا، قد تتأثر سرعة الحساب، وقد تبحث عن نهج VBA لتحسين أتمتة سير العمل أو تقليل العمليات اليدوية.
استخدم ماكرو 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 الخاصة بك وقم دائمًا بعمل نسخة احتياطية لملف العمل قبل تشغيل الكود.
ملاحظة: إذا واجهت أخطاء، تحقق من أن اختيارك يستثني صف الرأس ويشمل فقط صفوف البيانات.

اكتشف سحر Excel مع Kutools AI
- التنفيذ الذكي: قم بعمليات الخلية، وتحليل البيانات، وإنشاء المخططات - كل ذلك يتم من خلال أوامر بسيطة.
- الصيغ المخصصة: قم بإنشاء صيغ مصممة خصيصًا لتسهيل سير عملك.
- برمجة VBA: كتابة وتطبيق أكواد VBA بسهولة.
- تفسير الصيغ: فهم الصيغ المعقدة بسهولة.
- ترجمة النصوص: تجاوز الحواجز اللغوية داخل جداول البيانات الخاصة بك.
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في 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 وPowerPoint + Office Tab Pro
- مثبّت واحد، ترخيص واحد — إعداد في دقائق (جاهز لـ MSI)
- الأداء الأفضل معًا — إنتاجية مُبسطة عبر تطبيقات Office
- تجربة كاملة لمدة30 يومًا — بدون تسجيل، بدون بطاقة ائتمان
- قيمة رائعة — وفر مقارنة بشراء الإضافات بشكل منفرد