重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

先日下記の質問をして解決したのですが

Excelでファイル1ファイル2ファイル3と3つあります。
ファイル1とファイル2にはそれぞれシートAとシートBがあり
B C D  E
 1 氏名 年齢 性別
 2 山本 25  男
 3 佐藤 30  女
 4 鈴木 35  男
シートAシートB共、上記のような感じです。

これをファイル3に抽出したいのですが、
ファイル3も
住所 氏名 年齢 性別
と、同じです。

条件としてファイル1とファイル2を入力するのは
ランダムに入力していきます。
ファイル1ファイル2に入力された時、マクロボタンを
押した時ファイル3に抽出したいのですが・・・

以下の文で解決しました。

Sub ボタン1_Click()
With Workbooks("ファイル3").Sheets("Sheet1")
GYOU1 = Range("B" & Rows.Count).End(xlUp).Row
GYOU2 = .Range("B" & Rows.Count).End(xlUp).Row +1
.Range("B" & GYOU2 & ":E" & GYOU2).Value = Range("B" & GYOU1 + 6  & ":E" & GYOU1).Value
End With
End Sub


抽出する条件を追加したいのでアドバイスを頂きたいのですが

①B列は最初から数字が入っているため、抽出するのはB列~E列がすべて入力されている時
②毎回2行づつ入力するので抽出するのは最終行とその上の1行の2列をファイル3に抽出したい。

分かりにくい文ですいませんが皆さんの知恵をおかしください。
よろしくお願いします。

A 回答 (1件)

ん~、よくわからないけど


Range("B" & GYOU1 + 6  & ":E" & GYOU1).Value

GYOU1 + 6  の6を+は何か意味があるのでしょうか?
②毎回2行づつ入力するので抽出するのは最終行とその上の1行の2列をファイル3に抽出したい。
Range("B" & GYOU2 & ":E" & GYOU2).Value = Range("B" & GYOU1 -1 & ":E" & GYOU1 -1).Value
Range("B" & GYOU2 +1 & ":E" & GYOU2 +1).Value = Range("B" & GYOU1 & ":E" & GYOU1).Value
では・・
①B列は最初から数字が入っているため、抽出するのはB列~E列がすべて入力されている時
スマートではないですが
IF Range("B" & GYOU1 -1 ).Value<>"" Then
IF Range("C" & GYOU1 -1 ).Value<>"" Then
IF Range("D" & GYOU1 -1 ).Value<>"" Then
Range("B" & GYOU2 & ":E" & GYOU2).Value = Range("B" & GYOU1 -1 & ":E" & GYOU1 -1).Value
End If
End If
End If
を2回記述するとか
ただ、作業的には、この2行に空白があったら何もしない方が良くないですか。
If WorksheetFunction.CountBlank(Range("A" & GYOU1 -1 & ":D" & GYOU1)) Then
MsgBox "空白のセルがあります。全て入力して再度実行してください"
Exit Sub
End If
を最初に入れた方が良ないのかなと思ったりしますが・・
    • good
    • 0
この回答へのお礼

お返事遅くなってすいません。

+ 6は1~6行目まではタイトル等入ってる為、7行目から入れるようにした結果です。

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

お礼日時:2016/06/02 13:44

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