Итерация по отдельным ячейкам Excel и экспорт с использованием кода VB - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть лист Excel, прикрепленный ниже в качестве ссылки на диск.Мне нужен код C # или VB, который будет читать Excel, выбирать только номера броска (т.е. 301) и любимые предметы (например, математика) каждого студента в листе Excel и экспортировать в другие Excel (в столбцах A и B), например:

301   Maths
302   English
303   Science
... and so on.

Обратите внимание, что записи, которые я должен выбрать, начинаются со строки 200. Остальное выше этого не нужно выбирать.

У меня есть этот код, который получает только данные Гарри. Требуетсяи другие студенты тоже.

Dim appXL As Excel.Application
Dim wbXL As Excel.Workbook
Dim wbsXL As Excel.Workbooks
Dim shXL As Excel.Worksheet
Dim Checker, Checker1 As Integer
appXL = CreateObject("excel.application")
appXL.Visible = True
wbsXL = appXL.Workbooks
wbXL = wbsXL.Open("C:\Users\Pashupati\Desktop\excel.xlsx")
shXL = wbXL.ActiveSheet
Dim rng, rng1 As Excel.Range
rng = CType(shXL.Cells(200, 3), Excel.Range)
rng1 = CType(shXL.Cells(208, 1), Excel.Range)
Checker = rng.Value.ToString()
Checker1 = rng1.Value.ToString()
End Sub()

Оценит координацию.

Нажмите здесь, чтобы посмотреть исходный файл Excel

1 Ответ

0 голосов
/ 27 декабря 2018
Sub macro1()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim xrow As Long, q As Long


Set ws1 = Workbooks("StudentData").Worksheets("Sheet1")
Set ws2 = Workbooks("NewWorkbook").Worksheets("Sheet1")

ws2.Cells(1, 2).Value = "Favourite Subjects"
ws2.Cells(1, 1).Value = "Roll no."
xrow = 2

For x = 200 To 300
    If ws1.Cells(x, 1).Value = "Favourite Subjects" Then
        q = x + 1
        ws1.Cells(q, 1).Value = ws2.Cells(xrow, 2).Value
        xrow = xrow + 1
    Else:
    End If
Next x

xrow = 2

For y = 200 To 300
    If ws1.Cells(y, 2).Value = "Roll no." Then
         ws1.Cells(y, 3).Value = ws2.Cells(y, 1).Value
         xrow = xrow + 1
    Else:
    End If
Next y

End Sub

Просто измените имена рабочих книг и рабочих таблиц, и это должно сделать работу.Если вы получаете сообщение об ошибке, вероятно, это синтаксис для использования ws1 и ws2, потому что Excel не любит передавать данные между книгами.Это можно исправить, изменив код на:

Sub macro1()
Dim xrow As Long, q As Long

xrow = 2

For x = 200 To 300
    If Cells(x, 1).Value = "Favourite Subjects" Then
        q = x + 1
        Cells(q, 1).Value = Cells(xrow, 6).Value
        xrow = xrow + 1
    Else:
    End If
Next x

xrow = 2

For y = 200 To 300
    If Cells(y, 2).Value = "Roll no." Then
         Cells(y, 3).Value = Cells(y, 5).Value
         xrow = xrow + 1
    Else:
    End If
Next y

End Sub

Затем скопируйте столбцы D и E и вставьте их в новый WB.

...