最大1万円超分の電子書籍プレゼント♪

なにか良い方法があれば教えてください。

複数シート(30シートほど)の特定範囲内で、特定セルに入力があれば1行まるまる抽出し、
一覧にしたいです。
なお、特定範囲には入力がないこともあるので、その場合は、次の行もしくは別シートを参照するようにしたい。
マクロは使わず、関数のみで処理できるとありがたいです。

(例)
シート1:
会社名 購入物 値段
ABC   ペン  200
あいう  けしごむ 300

シート2:
会社名  購入物 値段

シート3:
会社名  購入物 値段
(1行空)
かきく  けしごむ 300


↓最終形態

合算シート:
会社名 購入物 値段
ABC   ペン  200
あいう  けしごむ 300
かきく  けしごむ 300

宜しくお願い致します。

gooドクター

A 回答 (2件)

> マクロは使わず、関数のみで処理できるとありがたいです。


1シートずつ IFERROR込みの数式を作って それらを30個「&」で
繋げば「関数のみで処理」できます。「関数のみで処理」することに
何のメリットがあるのかは分かりませんが……

計算に使うのなら同じ種類のデータを分けてはいけませんね。関数で
何とかしたいと思っているなら猶更です。入力データは一元管理が大
前提ですよ。
    • good
    • 2
この回答へのお礼

ご回答いただきありがとうございます。
Excelの操作になれていないスタッフが多いので、マクロを使ってしまうと、
修正が必要な時、自分しか対応できなくなってしまうことを防ぎたかったため、なるべく関数でとご依頼させていただきました。
複数の会社からデータが送られてくるのですが、一元管理できるような仕組みも考えてみたいと思います。
ありがとうございました。

お礼日時:2017/10/20 19:02

こんにちは!



No.1さんもおっしゃっているように、30シートの操作を関数で!
となると相当の労力が必要なのでは?
(できるかどうかは別として・・・)

そのような気力はないので、手っ取り早くお望みでないVBAでの一例です。
興味があれば試してみてください。

尚、各シートとも1行目が項目行で項目数は同じだとします。
そして「合算シート」の1行目項目名は入力済みだという前提です。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() '//この行から//
Dim k As Long, lastRow As Long, lastCol As Long
Dim myRng As Range, wS As Worksheet
With Worksheets("合算シート")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, lastCol)).ClearContents
End If
For k = 1 To Worksheets.Count
If Worksheets(k).Name <> .Name Then
Set wS = Worksheets(k)
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow, lastCol)).Copy .Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
End If
Next k
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
Set myRng = Range(.Cells(2, "A"), .Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks)
If Not myRng Is Nothing Then
myRng.EntireRow.Delete
End If
.Activate
End With
MsgBox "完了"
End Sub '//この行まで//

※ 関数でないので、データ変更があるたびに
マクロを実行する必要があります。m(_ _)m
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
数式ならなんとか理解できる人が多いため、修正が発生した際、
自分しか対応できなくなることを防ぐため、数式のみでご依頼させていただきました。
VBAありがとうございます。
こちら、サンプルデータで使ってみたいと思います。
ありがとうございました。

お礼日時:2017/10/20 19:09

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング