2017-08-09 13 views
0

VBAコードの投稿を分割するかなりのデータが見つかりましたが、コンテンツで分割してその結果を新しいシートに入れます(元のデータを元の状態に残す必要があります)。1行のデータを複数のユニークな行に分割して新しいシートに入れ、ヘッダーを値として、セルの内容を値として含める

国名がヘッダーの列に値が含まれているスプレッドシートがあります。新しい列に国が表示され、新しい列に新しい行に分割する必要があります。新しい行

私はセルの内容は、これは、生データの小さな一例である行3

での例のように空白になっているすべての国のヘッダを無視したい: Raw Data Example

そして、これは何私ですが Required Results

私はVBAコードについて尋ねていますが、VBAを書く方法はまだ分かりませんが、私のシナリオに合わせてインターネットで見つけたコードを調整するだけです。

答えて

0

VBAをコーディングするのは初めてのため、ForとIfを使って簡単なコードを作ったので、この関数を習得してみてください。 私はすべての変数を宣言せず、宣言し、データ型について学びました。 LAST_ROWとLAST_COLUMNは、主に動的なスプレッドシート

Sub test() 
'Declare variables here 
Dim sht1, sht2 As Worksheet 

'sht1 has the data and sht2 is the output Worksheet, you can change the names 
Set sht1 = ThisWorkbook.Worksheets("Sheet1") 
Set sht2 = ThisWorkbook.Worksheets("Sheet2") 

last_row1 = sht1.Range("A65536").End(xlUp).Row 
last_column = sht1.Cells(1, sht1.Columns.Count).End(xlToLeft).Column 
x = 1 

'Add header 
sht2.Cells(1, 1) = "Company" 
sht2.Cells(1, 2) = "Country" 
sht2.Cells(1, 3) = "Status" 
'Data add 
For i = 2 To last_row1 
'Assuming Company is in Column 1 or A 
    For k = 2 To last_column 
     'If cell is different from blank then write data 
     If sht1.Cells(i, k) <> "" Then 
     sht2.Cells(x + 1, 1) = sht1.Cells(i, 1) 
     sht2.Cells(x + 1, 2) = sht1.Cells(1, k) 
     sht2.Cells(x + 1, 3) = sht1.Cells(i, k) 
     x = x + 1 
     End If 
    Next k 
Next i 

MsgBox "Data Updated" 
End Sub 

次の時間を作るために、エクセルVBAで多くのことを助けることができる変数であり、いくつかのコーディングを学び、あなたのコードを投稿してみてください。

+0

私は通常、自分で仕事のいくつかをやろうとしますが、このインスタンスでは、達成しようとしていたものの近くにあるものを見つけるのに本当に苦労しました。次回はもっと頑張ります。これは美しく動作しますので、非常にありがとうございます。私は正解とマークしています。 –

関連する問題