1
5つの同じワークシート(名前は10,20,30,40,50)があり、それらを個別のファイル(名前:csv)にコピーしたいとします。まず、セルの値が<> ""と0の場合は、すべてのワークシートでマクロを検索する必要があります(すべて5と同じです)。複数のワークシートで範囲を設定する
さらに、条件が満たされる。残念ながら私は自分が望む値を得られません。
誰かが私の間違いを見つけられますか?
興味があります:コードは、ソースとして機能しているワークシートが1つしかない場合にはうまく機能しました。したがって、範囲を変更/調整する必要があると思います。 は、残念ながら私のVBAはまだ非常に悪く、私は解決策
Sub Sample()
Dim i As Integer
Dim j As Integer
Dim resultrange As Range
Dim row As Range
Dim sheetsArray As Sheets
Set sheetsArray = ActiveWorkbook.Sheets(Array("10", "20", "30", "40", "50"))
Dim target As Range
Dim sheetObject As Worksheet
For Each sheetObject In sheetsArray
Set target = sheetObject.Range("H6:T529")
Next sheetObject
Dim cell As Range
Set resultrange = Sheets("CSV").Range("C2:T1000")
i = 1
For Each cell In target
If (cell.value <> "" And cell.value <> 0) Then
resultrange.Rows.Cells(i, 5).value = cell.value
resultrange.Rows.Cells(i, 17).value = Range("A" & cell.row).value
resultrange.Rows.Cells(i, 18).value = Range(Col_Letter(cell.column) & "2").value
resultrange.Rows.Cells(i, 2).value = Range(Col_Letter(cell.column) & "1").value
i = i + 1
End If
Next cell
End Sub
「私は合理的な方法で列を表示するために、他のフォーラムからコピーした機能を見つけることができません
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function
ありがとうございます!問題は、現在のところ、「ResultRange.Rows.Cells(i、5).Value = cell.Value'」から値を取得するだけです。もう一方は間違っています(「ResultRange.Rows.Cells(i、17) ).Value = Range( "A"&cell.Row).Value' ")または表示されません(最後の2つの条件)。 ResultRange.Rows.Cells(i、18).Value = Sheets( "Sheetname")。Range(Col_Letter(cell.Column)& "2")このコードは、 ).Value'たとえば、 – Sven
@Sven - 編集を参照してください - あなたはグローバルな 'Range'を使っていたと思います。代わりに 'target'から' .Cells'を使います。 – Comintern
ありがとうございました!しかし、私はまだ3つの条件から正しい値を得ていません。 :( – Sven