
No.3ベストアンサー
- 回答日時:
元データのH列と結果のF列G列(それぞれ他の位置の列でも可)を補助として使わせて貰えるなら、数式で可能です。
個別の関数についても説明が欲しい場合は追記するので教えてください。
あ行シートのH1は空欄もしくは0にしておきます。
か行シートのH1は=あ行!H1+COUNTIF(あ行!G:G,"★")とします。
これらはさ行以降にも流用できるように、あえてこのような形にしています。
さ行の場合はか行に入力したものの、あ行の所をか行に変えてください。
内容としては、その前の行のシートがおわるまでに★、がいくつあったかを表示させます。
H2以降はあ行か行(さ行以降も)全部同じです。結果シートは別ですが。
H2=IF(G2="★","★"&COUNTIF(G$1:G2,"★")+H$1,"")
これを必要な行の分だけコピーしてください。
内容としては、★が付いてたら★に番号を付けて表示するものです。
あとは結果シートです。
まずG2(G3以降コピー)に該当するシートを表示させます。
G2=IF(ROW()-1<=か行!H$1,"あ","か")&"行!"
さ行以降がある場合は、IFの中にIFを重ねていくことになります。
必要であれば書くので聞いてください。
H2(H3以降コピー)に、該当する行番号を表示させます。
H2=MATCH("★"&ROW()-1,INDIRECT(G2&"H:H"),0)
A2(A3以降コピー)は、今作った2つを利用すれば簡単です。
A2=INDIRECT($G2&"A"&$H2)
B〜FについてはAをコピーして、Aの所をそれぞれB〜Fに変えてください。
コピーだけで可能にもできますが、式が長くなるので5個くらいなら直接書き換えた方が早いです。
必要な行数コピーすれば求めた表になると思います。
必要以上にコピー(★が5個しかないのに6行以上作る等)すると、エラー表示になります。
エラーが表示されないようにするには式を追加する必要があるので、必要であれば言ってください。
こんばんは。
教えてくださりありがとうございます。
頂いた内容で試してみたところ、無事に反映できました!
ありがとうございます!m(_ _)m
>G2=IF(ROW()-1<=か行!H$1,"あ","か")&"行!"
>さ行以降がある場合は、IFの中にIFを重ねていくことになります。
さ行以降がある場合、どのように記述したら良いか教えて頂けませんか・・・?
宜しくお願いします。
No.2
- 回答日時:
このようなものはいかがでしょうか?
---------------------------------------------------------------------
Sub 集計()
Dim 終 As Long
Dim 行 As Long
Dim 列 As Long
Dim 先 As Long
Sheets("結果").Select
終 = Cells(Rows.Count, 1).End(xlUp).Row
If 終 < 2 Then 終 = 2
Range(Cells(2, 1), Cells(終, 6)).ClearContents
先 = 2
Sheets("あ行").Select
終 = Cells(Rows.Count, 7).End(xlUp).Row
If 終 >= 2 Then
For 行 = 2 To 終
If Cells(行, 7).Value = "★" Then
For 列 = 1 To 6
Sheets("結果").Cells(先, 列).Value = Cells(行, 列).Value
Next
先 = 先 + 1
End If
Next
End If
Sheets("か行").Select
終 = Cells(Rows.Count, 7).End(xlUp).Row
If 終 >= 2 Then
For 行 = 2 To 終
If Cells(行, 7).Value = "★" Then
For 列 = 1 To 6
Sheets("結果").Cells(先, 列).Value = Cells(行, 列).Value
Next
先 = 先 + 1
End If
Next
End If
Sheets("結果").Select
End Sub
---------------------------------------------------------------------
こんばんは。
教えてくださりありがとうございます!
私のスキル的に関数のほうが触りやすかったため、今回は関数で
試してみましたが、今度トライしてみます。
ありがとうございましたm(_ _)m
No.1
- 回答日時:
こんばんは!
今回は「あ行」シートと「か行」シートだけの抽出でよいのですね?
手っ取り早くVBAでやってみました。
一例です。
Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1()
Dim i As Long, k As Long, lastRow As Long 'この行から//
Dim wS As Worksheet, myAry As Variant
myAry = Array("あ行", "か行") '←Sheetを増やしたい場合、シート名を追加//
With Worksheets("結果")
lastRow = .Cells(Rows.Count, "B").End(xlUp).Row
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "F")).ClearContents
End If
For k = 0 To UBound(myAry)
Set wS = Worksheets(myAry(k))
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
If wS.Cells(i, "G") = "★" Then
.Cells(Rows.Count, "B").End(xlUp).Offset(1, -1).Resize(, 6).Value = _
wS.Cells(i, "A").Resize(, 6).Value
End If
Next i
Next k
End With
End Sub 'この行まで//
※ 関数でないので
データ変更があるたびにマクロを実行する必要があります。m(_ _)m
こんばんは!
教えていただきありがとうございます。
お礼が遅くなり申し訳ありません。
今回は関数で試してみましたが、VBAを使ってもできるんですね。
今度試してみます!ありがとうございましたm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
【関数】3つのセルの中で最新...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
【マクロ】元データと同じお客...
-
【画像あり】オートフィルター...
-
エクセルの関数について
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ画像あり】❶1つの条件...
-
エクセルの複雑なシフト表から...
-
【マクロ】変数に入れるコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報