وعليكم السلام ورحمة الله تعالى وبركاته
كما سبق الدكر من الأستاد @عبدالله بشير عبدالله طلبك غير واضح إظافة أن أرقام الأعمدة على الملف تتواجد في الصف 3 ليس 2
مجرد تخمين ربما تقصد جلب بيانات العمود بشرط إدخال قيمة رؤوس الأعمدة (رقم العمود)
جرب هدا
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OnRng As Variant, tmp As Variant, lastRow As Long, a As Long, Clé As String
Dim WS As Worksheet: Set WS = Sheets("Sheet1")
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, WS.Range("AQ3:BO3")) Is Nothing Then
lastRow = WS.Columns("A:Z").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
OnRng = WS.Range("A4:Z" & lastRow).Value
tmp = WS.Range("A3:Z3").Value
Clé = Target.Value
Application.ScreenUpdating = False
If IsEmpty(Target.Value) Then
WS.Range(WS.Cells(4, Target.Column), WS.Cells(lastRow, Target.Column)).ClearContents
Else
For a = 1 To UBound(tmp, 2)
If tmp(1, a) = Clé Then
With WS.Range(WS.Cells(4, Target.Column), WS.Cells(lastRow, Target.Column))
.ClearContents
.Value = Application.Index(OnRng, 0, a)
End With
Exit For
End If
Next a
End If
If a > UBound(tmp, 2) Then Target.ClearContents: MsgBox "لم يتم العثور على " & _
Target.Value & " في قاعدة البيانات", vbExclamation, "إنتبـــاه"
End If
Application.ScreenUpdating = True
End Sub
استخراج الاعمدة.xlsm