Giúp em chuyển đổi file trắc nghiệm (2 người xem)

  • Thread starter Thread starter mondays
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

mondays

Thành viên mới
Tham gia
26/10/12
Bài viết
28
Được thích
3
Tình hình em có 1 file trắc nghiệm mà nó lại chia câu hỏi và các ký tự đại diện của câu hỏi ở 2 cột khác nhau, cũng như câu hỏi có dòng cái là 1 dòng, có cái là 2 dòng !!! . Xin các bác giúp em:
Sau khi chuyển đổi thì:
- Trước câu hỏi phải có ký hiệu ** (nội dung câu hỏi phải nằm trên cùng 1 dòng, nếu nằm ở 2 dòng thì gộp lại thành 1 dòng), trước câu trả lời phải có dấu ##
- Các ký hiệu ** và ## nằm trong cùng một ô với câu hỏi/đáp án
- Không làm mất định dạng in đen của đáp án hoặc nếu mất định dạng in đậm thì phải dời đáp án in đen đó lên làm đáp án đầu tiên dưới câu hỏi.
Em xin cám ơn các bác thật nhiều trước ah
(chi tiết em có gửi file kèm theo ah)
 

File đính kèm

Tình hình em có 1 file trắc nghiệm mà nó lại chia câu hỏi và các ký tự đại diện của câu hỏi ở 2 cột khác nhau, cũng như câu hỏi có dòng cái là 1 dòng, có cái là 2 dòng !!! . Xin các bác giúp em:
Sau khi chuyển đổi thì:
- Trước câu hỏi phải có ký hiệu ** (nội dung câu hỏi phải nằm trên cùng 1 dòng, nếu nằm ở 2 dòng thì gộp lại thành 1 dòng), trước câu trả lời phải có dấu ##
- Các ký hiệu ** và ## nằm trong cùng một ô với câu hỏi/đáp án
- Không làm mất định dạng in đen của đáp án hoặc nếu mất định dạng in đậm thì phải dời đáp án in đen đó lên làm đáp án đầu tiên dưới câu hỏi.
Em xin cám ơn các bác thật nhiều trước ah
(chi tiết em có gửi file kèm theo ah)
Giống như bạn thách đố mọi người vậy. Bài trước ở topic khác thì 2 cái dấu ## nằm chung với dữ liệu, sau khi giải cho bạn xong rồi giờ đưa tiếp file khác với dạng dữ liệu kiểu khác. Nói thật đối với mình bài này chẳng có gì khó khăn nhưng với dạng dữ liệu thay đổi liên tục như vậy mình không muốn đụng vào nữa.
 
Upvote 0
Giống như bạn thách đố mọi người vậy. Bài trước ở topic khác thì 2 cái dấu ## nằm chung với dữ liệu, sau khi giải cho bạn xong rồi giờ đưa tiếp file khác với dạng dữ liệu kiểu khác. Nói thật đối với mình bài này chẳng có gì khó khăn nhưng với dạng dữ liệu thay đổi liên tục như vậy mình không muốn đụng vào nữa.

Hiểu lầm rồi bác ơi!! Vì cấu trúc câu hỏi phải có dạng ** và ##. Tuy nhiên mỗi câu hỏi thì mình lấy từ nhiều nguồn tổng hợp lại. Nguồn của câu hỏi mình đang hỏi là nó cho sẵn ở trong một cái bảng (cột 1 là để số câu và dạng đáp án ABCD, cột 2 là nội dung câu hỏi). Mình gặp đã gặp khó khăn trong việc ghép lại như định dạng ** và ## vì số lượng câu hỏi rất nhiều!!! nên mình mới hỏi mọi người thôi. Công việc của mình nhiều lắm nên không có thời gian đâu mà thách đố mọi người!! Xin bác đừng hiểu lầm!!
 
Upvote 0
Bạn chạy thử code này:
Mã:
Sub Convert1()
On Error Resume Next
Dim Cll As Range, i As Long, j As Long, k As Long, Result()
ReDim Result(1 To Selection.Rows.Count, 1 To 1)
For i = 1 To Selection.Rows.Count
    If Selection(i, 1).Value = "" Then
        Result(j, 1) = Result(j, 1) & " " & Selection(i, 2).Value
    ElseIf IsNumeric(Selection(i, 1).Value) Then
        j = j + k + 1
        k = 1
        Result(j, 1) = "** " & Selection(i, 2).Value
    ElseIf Selection(i, 1).Value = "##" Then
        If Selection(i, 2).Font.Bold Then
            Result(j + 1, 1) = "## " & Selection(i, 2).Value
        Else
            k = k + 1
            Result(j + k, 1) = "## " & Selection(i, 2).Value
        End If
    End If
Next
Selection.Offset(, 2).Resize(j + k, 1).Value = Result
End Sub
Chọn vùng dữ liệu (gồm 2 cột) rồi chạy code nhé.
 
Upvote 0
Bạn chạy thử code này:
Mã:
Sub Convert1()
On Error Resume Next
Dim Cll As Range, i As Long, j As Long, k As Long, Result()
ReDim Result(1 To Selection.Rows.Count, 1 To 1)
For i = 1 To Selection.Rows.Count
    If Selection(i, 1).Value = "" Then
        Result(j, 1) = Result(j, 1) & " " & Selection(i, 2).Value
    ElseIf IsNumeric(Selection(i, 1).Value) Then
        j = j + k + 1
        k = 1
        Result(j, 1) = "** " & Selection(i, 2).Value
    ElseIf Selection(i, 1).Value = "##" Then
        If Selection(i, 2).Font.Bold Then
            Result(j + 1, 1) = "## " & Selection(i, 2).Value
        Else
            k = k + 1
            Result(j + k, 1) = "## " & Selection(i, 2).Value
        End If
    End If
Next
Selection.Offset(, 2).Resize(j + k, 1).Value = Result
End Sub
Chọn vùng dữ liệu (gồm 2 cột) rồi chạy code nhé.

Em cám ơn bác nhiều!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom