
No.2ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub 一覧まとめ()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Dim maxrow1 As Long
Dim maxcol1 As Long
Dim maxcol2 As Long
Dim row1 As Long
Dim col1 As Long
Dim col2 As Long
Dim dicT As Object '地区用
Dim dicK As Object '果物用
Dim nameT As String '地区名
Dim nameK As String '果物名
Dim fpath As String
Set dicT = CreateObject("Scripting.Dictionary")
Set dicK = CreateObject("Scripting.Dictionary")
Set ws1 = ThisWorkbook.Worksheets("一覧まとめ")
maxrow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row '1列目の最終行を求める
maxcol1 = ws1.Cells(1, Columns.Count).End(xlToLeft).Column '1行目の最終列を求める
If maxrow1 < 2 Then Exit Sub
If maxcol1 < 2 Then Exit Sub
ws1.Range(ws1.Cells(2, 2), ws1.Cells(maxrow1, maxcol1)).ClearContents
'各地区の行番号を記憶
For row1 = 2 To maxrow1
nameT = ws1.Cells(row1, 1).Value
dicT(nameT) = row1
Next
'各果物の列番号を記憶
For col1 = 2 To maxcol1
nameK = ws1.Cells(1, col1).Value
dicK(nameK) = col1
Next
'各県くだもの.xlsxをオープン
fpath = ThisWorkbook.Path & "\" & "各県くだもの.xlsx"
Set wb2 = Workbooks.Open(fpath)
Set ws2 = wb2.Worksheets("Sheet1")
maxcol2 = ws2.Cells(3, Columns.Count).End(xlToLeft).Column '3行目の最終列を求める
nameK = "未定"
'全地区分繰り返す
For col2 = 2 To maxcol2
If ws2.Cells(2, col2).Value <> "" Then
nameK = ws2.Cells(2, col2).Value
End If
nameT = ws2.Cells(3, col2).Value
If dicK.exists(nameK) = False Then
MsgBox (nameK & ":この果物は一覧まとめにありません")
Exit Sub
End If
If dicT.exists(nameT) = False Then
MsgBox (nameT & ":この地区は一覧まとめにありません")
Exit Sub
End If
row1 = dicT(nameT)
col1 = dicK(nameK)
ws1.Cells(row1, col1).Value = ws2.Cells(4, col2).Value
Next
wb2.Close
MsgBox ("完了")
End Sub
ご回答ありがとうございました。
回答頂いたマクロで試したところ、やりたかった事ができました。
私にはマクロの内容は難しく、まだわからない所もありますが、コピペするくらいしか思いつかなかったので、このような方法もあるんだと大変勉強になりました。
これからも度々質問させていただくと思うので、機会がありましたらよろしくお願い致します。
No.3
- 回答日時:
No2です。
各くだものの照合は、果物名が完全に一致するかどうかで見ています。
一覧まとめに「バナナ」があり、Sheet1に「ばなな」があった場合はエラーになります。
果物名は、提示された例でなくても構いません。
(パパイヤ、マンゴー等があっても処理可能です)
果物の追加(列の追加)も可能です。
各地区についても同様です。
地区の追加も可能です。
No.1
- 回答日時:
不明点です。
①マクロは、上の表のあるブックに格納すると考えて良いでしょうか。
②上の表のシート名はなんでしょうか。
③下の表のシート名はなんでしょうか。
④下の表のシートを格納したブックのブック名は何でしょうか。
⑤上記④のブックは、マクロ実行時、すでにオープンされている前提で良いですか。
それとも、クローズされていて、オープンするところから始めるのでしょうか。
そうであれば、そのブックを格納したフォルダ名も提示する必要があります。
⑥上記の表の行と列が追加されることはないと考えて良いですか。
果物で、メロン、パパイヤが追加されるようなケース
地名で、青森、新潟が追加されるようなケース。
⑦上記の⑥と同じように、地名、果物の種類が追加されるケースはないと考えて良いですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) 【マクロ】セルの塗りつぶし色をbook1からbook2へ転記したい 4 2023/09/27 10:50
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/18 17:23
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) 【エクセル】複雑な関数を教えてください 1 2023/06/05 18:09
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) 【マクロ】book1からbook2への適切な転記が出来ない件 2 2023/11/08 17:23
- Excel(エクセル) エクセルの条件付き書式 3 2022/05/08 03:17
このQ&Aを見た人はこんなQ&Aも見ています
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
-
4
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
5
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
6
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
7
VBA 別シート、別ブックへ条件一致で転記
Excel(エクセル)
-
8
VBAで別ブックの列を検索し、該当があれば行ごと新規ブックにコピーしたい。
Excel(エクセル)
-
9
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
10
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
11
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
12
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
13
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
14
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
15
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
16
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
17
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
18
条件にマッチする行を抽出するVBAを教えてください
経営情報システム
-
19
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
20
B列の最終行までA列をオートフィル
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel VBA コンボボックスで空...
-
Excelマクロで空白セルの大小比...
-
エクセル チェックボックスの...
-
VBA 別ブックから条件に合うも...
-
【VBA】セルが空白の場合に処理...
-
クリップボードの内容を変数に...
-
Excel 入力規則のリストのカー...
-
複数セルに〇印をつけるマクロ
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
エクセル: セルの枠を超えて表示
-
エクセルのセル内に全角数字を...
-
エクセルのアポストロフィを一...
-
エクセルのパーセンテージで、...
-
エクセル:マクロ「Application...
-
IF関数で空欄("")の時、Null...
-
エクセルでの計算式で求められ...
-
貼り付けで複数セルに貼り付けたい
-
EXCELで特定のセルに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
VBA 別ブックから条件に合うも...
-
Excel 入力規則のリストのカー...
-
マウスを乗せたときにセルの色...
-
エクセルの取り消し線を検出す...
-
GridViewの行選択イベントを発...
-
マクロについて質問です 範囲内...
-
VBA サンダーバードのメール自...
-
エクセル チェックボックスの...
-
Excelマクロで空白セルの大小比...
-
複数セルに〇印をつけるマクロ
-
【VBA】セルが空白の場合に処理...
-
SPREADで1つのセルに複数のチ...
-
テーブルの境界線を消したい!!
-
【VB.NET】DataGridViewセルの...
-
vbaで色付けされたセルを除外し...
-
エクセルVBA 計算範囲を変更する。
-
セルデータの有無を判断して行...
おすすめ情報
情報足らずですみません。
補足いたします。
①マクロは上の表のブックに格納したいです
②一覧まとめ
③sheet1
④各県くだもの
⑤下の表は閉じた状態でオープンするところから始めたいと思っています。
フォルダ名:各県まとめフォルダ
上、下の表どちらも同じフォルダに格納してあります。
⑥⑦どちらも追加するケースはありません。