التفوق - استخراج البيانات من الأعمدة المحددة

القضية

لدي بعض أعمدة البيانات التي تبدو إلى حد ما مثل هذا:

 data1 ... data2 ... data3 val ......... val ........ val val ......... val ........ val val ......... فال ........ فال فال ......... فال ........ فال 

(data1-3 هي مجرد أسماء للبيانات الموجودة في الأعمدة)

أرغب في تحويل هذا تلقائيًا أو أقل إلى ملف بتنسيق .csv تم تعديله وفقًا لهذه الخطوط:

 (data3) (data1) (data2) val ........- val ....... val val ........- val ....... val val .. ......- فال ....... فال فال ........- فال ....... فال 

يتم وضع رؤوس الأعمدة داخل () لأنه ليس من المفترض أن يتم عرضها في ملف بتنسيق .csv. ترتيب data1-3 عشوائي في مثالي ، أحتاج أن أكون قادرًا على استخدام ترتيب مختلف. أنا أعرف كيفية تنسيق الخلايا لتغيير القيم إلى سلبيات.

أتوقع أن تكون مثل صيغة استرداد البيانات من عمود مسمى في ملف ؛ ستبدو الخلايا في العمود الأخير بشكل يشبه '= [path / sourcefile.xls] sheetname! column-values: "data2"'. قد يكون هذا الطريق بعيد المنال وربما حتى في التفوق ، وإذا لم يكن الأمر كذلك أود أن أعرف.

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

أي أفكار حول كيفية القيام بذلك؟

حل

الرمز أدناه يفترض

  • 1. البيانات في ورقة تسمى الورقة 1
  • 2. يمكن إنشاء أسماء صفحات مؤقتة myTempSheet
  • 3. اسم ملف CSV ليتم حفظه في tempCSV.csv
  • 4. لا يوجد عمود فارغ

ليستخدم

بعد لصق الرمز ، قم بتنفيذ الماكرو. سيسألك كيف تريد أن يظهر العمود في ملف CSV. لذلك إذا كان العمود الأول الذي تريده هو D ، فإن الإجابة الصحيحة هي 4. بمجرد الانتهاء من إبلاغك عن كيفية ظهور الأعمدة ، فقط اضغط على "موافق" دون أي قيمة.

الشفرة:

 Sub createFile () Dim numOfCol باسم Integer Dim colNum كـ Integer Dim myTempSheet باسم String Dim dataSheet باسم String Dim colValue باسم متغير Dim ColIndex () باسم Integer Dim cvsName باسم String ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "ورقة البيانات" tempCSV "أوراق (dataSheet). حدد numOfCol = خلايا (1 ، أعمدة. العد). End (xlToLeft). Column ReDim ColIndex (numOfCol) بالنسبة colNum = 1 To numOfCol colValue = InputBox (" ما هو العمود الذي يجب أن يكون في الموضع " & "في ملف CVS" ، "Col Position") إذا colValue = "" ، ثم الخروج إلى Else ColIndex (colNum) = colValue End إذا التالي في الخطأ استئناف الأوراق التالية (myTempSheet) .Delete On Error GoTo 0 Sheets.Add ActiveSheet. الاسم = myTempSheet للحصول على colNum = 1 إلى numOfCol If ColIndex (colNum)> 0 ثم الأوراق (dataSheet) .اختر الأعمدة (ColIndex (colNum)). حدد Selection.Copy Sheets (myTempSheet) .Select Columns (colNum) .Select ActiveSheet. xlValue Eless Exit For End If Next Sheets (myTempSheet). حدد numOfCol = خلايا (1 ، Columns.Count). End (xlToLe ft). العمود بالنسبة colNum = 1 إلى numOfCol If Cells (1، colNum) "" Then Cells (1، colNum) = "(" & Cells (1، colNum) & ")" End If Next ActiveWorkbook.SaveAs _ Filename: = cvsName & ".csv" ، _ FileFormat: = xlCSV ، _ CreateBackup: = True End Sub 

ملحوظة

بفضل rizvisa1 لهذه النصيحة في المنتدى.

المقال السابق المقالة القادمة

نصائح الأعلى