Excelにて、別ファイルからデーター(在庫数)を転記するのですが、転記先のデーター(在庫数)と合計したいのです、可能でしょうか
可能でしたらご教授願います。
<説明>
Aファイル=転記元
Bファイル=転記先
データー = 在庫数
Aファイルからデーター(在庫数)をBファイルのセルへ転記します(在庫数は、-1などのーのついた数字もあり)転記先のセルはH2:AM100の範囲です。Bファイルのセルに入力してあるデーター(在庫数)とAファイルから転記された(在庫数)を合計したいのですが、どうすれば合計出来るのか分からず困っています。もしシートモジュールにマクロをいれてできるのであれば、どのようなコードを
入れたらよいのかご教授願います。
また、現在 シートモジュールに下記が入力されています
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
UserForm3.Show vbModeless
ElseIf Target.Address = "$B$1" Then
UserForm6.Show vbModeless
End If
Cancel = True
End Sub
説明が下手ですみません
ご教授願います。
No.4ベストアンサー
- 回答日時:
こんばんは、
ご掲示のコードを改造して対象に転記する時に既存データにプラスすると言う事であれば、
処理部分 wS.Cells(FoundCell.Row, myCol) = .Cells(i, "I")
を
wS.Cells(FoundCell.Row, myCol) = _
wS.Cells(FoundCell.Row, myCol) + .Cells(i, "I")
とすれば良いように思います。
範囲は、ComboBox1の値と1行目項目の一致するカラムと
H列の値とA列行方向の一致する行を検索して、同じ行の該当カラムにI列同じ行の値を代入しているように思います。
この範囲を("H2:AM100")に限定すると言う事でしょうか?
ComboBox1の値で調整できそうですが、どうでしょう。
ありがとうございます
wS.Cells(FoundCell.Row, myCol) = _
wS.Cells(FoundCell.Row, myCol) + .Cells(i, "I")
使わせていただきます。
親切に、回答頂きありがとうございました。
感謝いたします
No.3
- 回答日時:
#1です
転記先、元のシート名を聞いていませんでしたね。
双方のシートはインデックス1としてのサンプルですが、
汎用性はありませんので、直してください。
2つのファイルは開いているものとします。
マクロはBファイル=転記先に書かれているとします。
転記元の拡張子は仮に.xlsxとしています。
対象シートは共にインデックス1です。
VBAで書き替えられた値は戻せませんので、コピーファイルなどで検証して必要に応じ変更を加えるようにしてください。
ざっくりとしか検証していませんのと、解釈が違っているかも知れませんので、あくまでデバッグ用サンプルです。
Dim i As Long, j As Long
Dim sorAry, trgAry, ansAry()
ReDim ansAry(98, 32)
Application.ScreenUpdating = False
Windows("Aファイル.xlsx").Activate
sorAry = Sheets(1).Range("H2:AM100")
ThisWorkbook.Activate
trgAry = Sheets(1).Range("H2:AM100")
For i = 1 To UBound(sorAry, 1)
For j = 1 To UBound(sorAry, 2)
ansAry(i - 1, j - 1) = sorAry(i, j) + trgAry(i, j)
Next j
Next i
ThisWorkbook.Sheets(1).Range("H2:AM100") = ansAry
Application.ScreenUpdating = True
No.1
- 回答日時:
こんばんは、回答ではありません。
転記先範囲は分かりますが、在庫数のあるセル範囲、出力先、転記された範囲との参照関係が解りません。
また、転記された時に一度にすべての範囲で実行するのか、在庫数を変更した時に合計するのかもわかりません。
何かシートモジュールにこだわる理由が御有りなのでしょうか。
ダブルクリックをトリガーにするのであれば、都度なのでしょうか?
合計をする時に都度転記する必要があるのかも不明ではないかと思います。
転記先の範囲に転記元と既にある値の合計を書き込むのであれば、
現状の値を関数などで算出している場合、関数は値になってしまいますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelはなんで先頭の0を消すん...
-
Excel元に戻す方法を教えてくだ...
-
【Microsoft Office Excel Comp...
-
Excelが固まってしまった。
-
西暦や和暦の表示をyyyymmdd表...
-
Excel 2019 のピボットテーブル...
-
【関数】スペースがいくつ入っ...
-
【Excel】セル内の時間帯が特定...
-
excelの不要な行の削除ができな...
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excelのセルを飛ばして入力する
-
Excel初心者です。 詳しい方、...
-
エクセルの行の抽出について質...
-
Excel初心者です。 詳しい方、...
-
【マクロ】エクセルにかいてあ...
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシート クエリ関数 1...
-
エクセルで指定した日付、店舗...
-
Excelのグラフ軸について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
ありがとうございます。
>転記先範囲は分かりますが、在庫数のあるセル範囲、出力先、転記された範囲との参照関係が解りません。
⇒在庫数のある範囲は、転記先範囲と同じです。セルには全てにデーターが入つてはいません
データー転記先セルのデーターに転記データーを合計したい(データー転記先が50で、転記データー50であれば100としたい)
>また、転記された時に一度にすべての範囲で実行するのか、在庫数を変更した時に合計するのかもわかりません。
⇒転記されたときに手合計されるのであれば全ての範囲でも、転記箇所のみでもかまいません
>何かシートモジュールにこだわる理由が御有りなのでしょうか。
⇒シートモジュールにこだわりはありません
>ダブルクリックをトリガーにするのであれば、都度なのでしょうか?
⇒説明が下手ですみません こだわりはありません
合計をする時に都度転記する必要があるのかも不明ではないかと思います。
>転記先の範囲に転記元と既にある値の合計を書き込むのであれば、
現状の値を関数などで算出している場合、関数は値になってしまいますね。
⇒現状、転記先のセルデーターに転記データーを上書きしてしまうのを合計した
データーにしたいのですが、関数でできるものなのかマクロで出来るものなのか
分からず、分かりにくい説明となってしまいました。
すみません
遅くまで対応して頂きありがとうございます
説明があいまいですみません
したいことは、現在、Aファイルのマクロで、Bファイルの("H2:AM100")の範囲の中のセルにデーターを転記します。
転記先のセルは("H2:AM100")の範囲で、その都度H2,I5,I6の様に複数のセルに転記します。
そして、転記したセルだけを対象に合計したいです。
Bファイルは、Aファイルから転記されたセルの箇所を合計するようにしたです。
Bファイルのシート数は、決まってなく1~5の間です。シート名もまちまちです。
Aファイルのコードです。分割します
Sub 転記()
Sub 転記()
Dim myPath As String, fN As String
Dim wB As Workbook, wS As Worksheet
Dim i As Long, k As Long
Dim c As Range, myCol As Long
Dim FoundCell As Range, FirstCell As Range
Dim myAry
myPath = ThisWorkbook.Path & "\"
fN = ComboBox2.Value
Workbooks.Open myPath & fN
Set wB = ActiveWorkbook
With ThisWorkbook.Worksheets("データーリスト")
For i = 2 To .Cells(Rows.Count, "H").End(xlUp).Row
If .Cells(i, "H") <> "" Then
For k = 1 To wB.Worksheets.Count
Set wS = wB.Worksheets(k)
Set c = wS.Rows(1).Find(What:=ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole)
If Not c Is Nothing Then
myCol = c.Column
Set FoundCell = wS.Range("A:A").Find(What:=.Cells(i, "H"), LookIn:=xlValues, Lookat:=xlWhole)
If Not FoundCell Is Nothing Then
Set FirstCell = FoundCell
GoTo 処理
Do
Set FoundCell = wS.Range("A:A").FindNext(After:=FoundCell)
If FoundCell.Address = FirstCell.Address Then Exit Do
処理: wS.Cells(FoundCell.Row, myCol) = .Cells(i, "I")
Loop
End If
End If
Next k
End If
Next i
End With
'MsgBox "完了"
End Sub
以上です