プロが教える店舗&オフィスのセキュリティ対策術

エクセルを使い、自動で複式簿記の仕分けができるようにしたいので、次のようなことはできますか?
第1シートの表は入力されている行と入力されていない行があり、この表をもとに、第2シートに入力されている行のみを上から順に詰めた表が自動で作成されるようにすることはできますか?
説明が難しいなら、何を勉強すればいいですか?マクロとかVBAとかなら、何の部分になりますか?

A 回答 (2件)

> 1.Sheet2に表示させるデータを3行目からにする場合には、どのように変化させるのでしょうか?


> 2.Sheet2に表示させるデータをA列からD列にする場合には、どのように変化させるのでしょうか?

修正しました。

Sub tenki02()
Dim i As Integer, n As Integer
n = 3
For i = 3 To 100

If Sheets("Sheet1").Cells(i, 1) <> "" Then
Sheets("Sheet2").Cells(n, 4).Value = Sheets("Sheet1").Cells(i, 1)
n = n + 1
End If
Next
End Sub
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
大変助かりました。

お礼日時:2004/04/26 18:35

VBAでやってみました。



シート1のA列にデータがとびとび入っていて、シート2のA列にデータを上から切れ目なく順番に表示させる方法です。
失敗するとまずいのでまずはバックアップをとってからテストしてみてください。
シート1のデータをとりあえず100行目まで対象にしましたが、For i = 1 To 100の100を変更すればいくつでもOKです。

1.Alt + F11 または、[ツール] メニューの [マクロ] をポイントし、 Visual Basic Editorをクリックします。

2.Visual Basic Editor ウィンドウのメニューから、  [挿入]→[標準モジュール] をクリックします。

3.表示されたコードウィンドウ(白く広い部分。カーソルが点滅していると思います。)に以下のマクロコード(SubからEnd Subまで)をコピペします。

4.ワークシートに戻り、[ツール] メニューの [マクロ] →「マクロ」で今貼り付けたマクロ名(tenki)を選択して、実行。

Sub tenki()
Dim i As Integer, n As Integer
For i = 1 To 100
If Sheets("Sheet1").Cells(i, 1) <> "" Then
n = n + 1
Sheets("Sheet2").Cells(n, 1).Value = Sheets("Sheet1").Cells(i, 1)
End If
Next
End Sub

この回答への補足

わざわざ、どうもありがとうございます。恐れ入りますが、もしできましたら、

1.Sheet2に表示させるデータを3行目からにする場合には、どのように変化させるのでしょうか?
2.Sheet2に表示させるデータをA列からD列にする場合には、どのように変化させるのでしょうか?

あつかましくてすみません。

補足日時:2004/04/26 14:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!