入力用紙にグレードが入力できる(A、B、C、Dのドロップダウンメニュー)学校のレポートカードを作成しようとしています。異なる学生が別々のシートにエクスポートされます。新しい用紙に情報のコラムをエクスポートする
入力シートの情報をブック内の別のシートにエクスポートするためにこのマクロ(下記)が見つかりましたが、行と列では機能しないという問題がありました。列Aの名前(A3など)を取り出し、その名前に基づいてワークシートを作成し、モジュールに入力した範囲変数に基づいて行3からB3、C3などの情報をエクスポートします。
私がしたいのは、列ではなく行から名前を取り出して、以下のの名前を新しいシートの名前である別のシートにエクスポートすることです。あなたがスクリーンショットでうまく見ることができるように、私の生徒の名前はD7からQ7まで、最初の生徒の成績はD8からD63までです。
[スクリーンショット] [1]
私はすべてVCOL、コマンドおよびその逆を行コマンドを変更しようとしたが、私はそれをデバッグするように見えることはできません。私はより良いプログラマになることに非常に関心がありますが、私は基本的には初心者だと認めなければなりません。何かアドバイス?
Sub parse_data()
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
vcol = 1
Set ws = Sheets("Sheet1")
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = "A1:C1"
titlerow = ws.Range(title).Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
For i = 2 To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
Sheets(myarr(i) & "").Columns.AutoFit
Next
ws.AutoFilterMode = False
ws.Activate
End Sub
あなたの質問に答える前に(潜在的にウイルスに感染した)サードパーティのサイトに移動する必要がある人を保存するには、リンクの最後にあるものを質問自体に貼り付けてください。 (画像の場合は、サードパーティのサイトがなくなっても、画像を今後利用できるサイトでホストされます) – YowE3K
@ASH - しかし、私は考えていませんそのウェブサイトは何で、画像のコピーを取るためにそこに行きたくない(または何でも)。 OPはイメージを質問に入れる必要があると思うので(imgurのSOセクションでそれをホストしています)、必要に応じて質問を編集してインライン化することができます。 – YowE3K