VBAを始めたばかりで、私は少しのロードブロッキングを打ちました。VBAでExcelで空白以外のセルを選択
私は50以上の列、900以上のデータ行を持つシートを持っています。私はそれらの列の約10を再フォーマットし、それらを新しいワークブックに貼り付ける必要があります。
book1の列の空白でないセルをすべてプログラムで選択し、いくつかの関数を実行して結果をbook2にドロップするにはどうすればよいですか?あなたは、列の最後の行を探しているなら
VBAを始めたばかりで、私は少しのロードブロッキングを打ちました。VBAでExcelで空白以外のセルを選択
私は50以上の列、900以上のデータ行を持つシートを持っています。私はそれらの列の約10を再フォーマットし、それらを新しいワークブックに貼り付ける必要があります。
book1の列の空白でないセルをすべてプログラムで選択し、いくつかの関数を実行して結果をbook2にドロップするにはどうすればよいですか?あなたは、列の最後の行を探しているなら
次の構文を使用して、他のブックのワークシートを参照できます。 deはあなたを始めなければなりません。元のブックのすべてのデータを新しいブックにコピーしますが、各値に1が追加され、空のセルはすべて無視されます。
Option Explicit
Public Sub exportDataToNewBook()
Dim rowIndex As Integer
Dim colIndex As Integer
Dim dataRange As Range
Dim thisBook As Workbook
Dim newBook As Workbook
Dim newRow As Integer
Dim temp
'// set your data range here
Set dataRange = Sheet1.Range("A1:B100")
'// create a new workbook
Set newBook = Excel.Workbooks.Add
'// loop through the data in book1, one column at a time
For colIndex = 1 To dataRange.Columns.Count
newRow = 0
For rowIndex = 1 To dataRange.Rows.Count
With dataRange.Cells(rowIndex, colIndex)
'// ignore empty cells
If .value <> "" Then
newRow = newRow + 1
temp = doSomethingWith(.value)
newBook.ActiveSheet.Cells(newRow, colIndex).value = temp
End If
End With
Next rowIndex
Next colIndex
End Sub
Private Function doSomethingWith(aValue)
'// This is where you would compute a different value
'// for use in the new workbook
'// In this example, I simply add one to it.
aValue = aValue + 1
doSomethingWith = aValue
End Function
このコードを実行しようとすると、「オブジェクトが必要です」というメッセージボックスが表示されます。 –
使用:
Sub SelectFirstColumn()
SelectEntireColumn (1)
End Sub
Sub SelectSecondColumn()
SelectEntireColumn (2)
End Sub
Sub SelectEntireColumn(columnNumber)
Dim LastRow
Sheets("sheet1").Select
LastRow = ActiveSheet.Columns(columnNumber).SpecialCells(xlLastCell).Row
ActiveSheet.Range(Cells(1, columnNumber), Cells(LastRow, columnNumber)).Select
End Sub
その他のコマンドをあなたがコピー&ペーストコマンドに慣れる必要があります。最後に
Sub CopyOneToTwo()
SelectEntireColumn (1)
Selection.Copy
Sheets("sheet1").Select
ActiveSheet.Range("B1").PasteSpecial Paste:=xlPasteValues
End Sub
、あなたを
Dim book2
Set book2 = Workbooks.Open("C:\book2.xls")
book2.Worksheets("sheet1")
これは完全にオフベースかもしれませんが、あなただけの新しいスプレッドシートに列全体をコピーして列を並べ替えることはできませんか?私はあなたが注文の完全性を維持する必要はないと仮定しています。
これは完全にオフベースです。 –
私はこの上で非常に遅れていますが、ここではいくつかの便利なサンプルを私は知っている:
'select the used cells in column 3 of worksheet wks
wks.columns(3).SpecialCells(xlCellTypeConstants).Select
または
'change all formulas in col 3 to values
with sheet1.columns(3).SpecialCells(xlCellTypeFormulas)
.value = .value
end with
が列で最後に使用された行を見つけるには、LastCellに頼ることはありません、信頼性がありません(データの削除後はリセットされません)。代わりに、私は同じようなものを使用します
lngLast = cells(rows.count,3).end(xlUp).row
どのプログラムを使用していますか?ExcelまたはAccess?あなたの質問のタイトルはExcelと言いますが、あなたのタグはアクセスと言います。 –
間違いなくExcelを指摘してくれてありがとう。これは、あなたが急いでタグ付けしない理由です。 –