お世話になります。
私は会社でExcelを使い事務をしております。
式を入力して少し事務を簡素化する事は出来ますが、マクロやVBには明るくありません。
シート1の雛型1箇所に入力すると同時に、シート2に一覧表が作成される様には出来ないものでしょうか?
頑張ってマクロを使ってみましたが、シート1のB1を入力するとシート2のB1の数値まで変わってしまいます。(表を参考にしてください)
シート1(雛型)
A B C
1 固定数 入力した数字 数式A/B
シート2(一覧表)
A B C
1 シート1A1の数字 シート1B1の数字 シート1C1の数字
2 シート1A1の数字 シート1B1の数字 シート1C1の数字
3 シート1A1の数字 シート1B1の数字 シート1C1の数字
4 シート1A1の数字 シート1B1の数字 シート1C1の数字
分かりにくい説明で申し訳ありません。
皆さまのお知恵をお待ちしております。
よろしくお願いします。
No.1
- 回答日時:
すみません、ちょっとやりたいことの内容がよくわからないんですが、質問に書かれたシート2はご自分で作ったマクロの結果という意味でしょうか?
作りたいのは
シート1(雛型)
A B C
1 固定数 入力した数字 数式A/B
2 固定数 入力した数字 数式A/B
3 固定数 入力した数字 数式A/B
4 固定数 入力した数字 数式A/B
シート2(一覧表)
A B C
1 シート1A1の数字 シート1B1の数字 シート1C1の数字
2 シート1A2の数字 シート1B2の数字 シート1C2の数字
3 シート1A3の数字 シート1B3の数字 シート1C3の数字
4 シート1A4の数字 シート1B4の数字 シート1C4の数字
ということでしょうか?
単純にシート1のそれぞれのセルを参照する、ということではダメなんですね?
お返事ありがとうございます。
質問の仕方が悪く申し訳ないです。
#3さんのお返事に補足しました。
もしお時間があれば回答お願いします。
No.2
- 回答日時:
Sheet1の一列目を入力用として、Sheet2にデータを重ねていくということでしょうか?
Sheet1のシートタブを右クリックして「コードを表示」を選択
下記のコードを貼り付ける。
Sheet1のB1が変更された時点でSheet1のA1:B1が入力されている場合、Sheet2のA列の最後の次の行に転記されます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("sheet1")
Set ws2 = Sheets("sheet2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 3).Value = _
ws1.Range("a1").Resize(1, 3).Value
End With
End Sub
お返事ありがとうございます。
質問の仕方が悪く申し訳ないです。
#3さんのお返事に補足しました。
もしお時間があれば回答お願いします。
No.3
- 回答日時:
私も#1のお方と同じく質問の意味(何をしたいか)が判りません。
シート1は固定数と入力値1個を取るためのものですよね。シート1のC1の数式A/Bは何のためにある(使う)のですか。シート2は何をしたいのでしょうか。
数値実例でも3-4行上げてもらえれば判るかもしれない。
シート2の各行で変わるのは何ですか。
●今閃きました。ひょっとしてシート1に入力した
値を行をづらして記録すること及びA/Bの値を計算して
累積して記録して行きたいのでしょうか。
それであればシート1のChangeイベントなど使い
シート2の行数を1ずつ増やせば良いのですが、VBAとしてもやや難しい。行を表す変数の扱い(下記のi)が私も含め、初学者には難しいと思う。
シートのChangeイベントに
Private Sub Worksheet_Change(ByVal Target As Range)
i = i + 1
Worksheets("sheet3").Cells(i, "B") = Target
End Sub
標準モジュールに
Public i
Sheet1のセルに値をいれるとSheet3のB列に
B1->B2->B3・・・に入力値をセットします。
あとA1の値とか、C列は(VBAでもやれますが)関数でやれば良いでしょう。
この回答への補足
皆さまお返事ありがとうございます。
質問の仕方が悪く申し訳ありません。
今回アークタンジェントを利用して角度取得一覧表を作成することが目的です。
そのためにシート1のA1には10、C1はA/B、D1には式ATAN(C1)*180/PI()を入力し、B1に数値を入力すれば角度を求めることが出来る雛型を作成しました。
B1が更新されるたびに、シート2にA1~D1の入力内容が自動的にとび、一覧表が作成されるようにしたいと思っています。
ちなみに求めたい角度は800~1000個あります。
初心者はやはり欲張らずに一覧表を作成し、式をコピーした方が良いのでしょうか?
皆さまの意見をお待ちしています。
No.4ベストアンサー
- 回答日時:
シート名
シート1 : 雛形
シート2 : データ蓄積用
シート1のB1に変更があった場合、シート1のA1:D1の:
1)「値のみ」をシート2に順次蓄積する。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("シート1")
Set ws2 = Sheets("シート2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 4).Value = _
ws1.Range("a1").Resize(1, 4).Value
End With
End Sub
2)数式も含めてシート2に順次蓄積する。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("シート1")
Set ws2 = Sheets("シート2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 4).Copy _
Destination:=ws2.Range("a" & lastA+1)
End With
End Sub
迅速かつ丁寧なお返事をありがとうございます。
早速試してみたところ、思っていた通りになりました。これで事務処理もスムーズになると思います。
丁寧な方々に出会えてすぐに問題も解決でき、本当ならば全員にポイントを差し上げたいところですが、今回はこのような配点にさせていただきました。
ご了承下さいませ。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel関数について質問です。 シート1に入力シートがあります。 =A1 =B1などで離れた数字な 5 2022/12/18 13:42
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルシートの合計の変動 5 2022/04/05 15:56
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) B列に、A列の数字が偶数の場合は1減算した数字、奇数の場合はそのまま数字を自動表示したい 4 2022/04/16 12:01
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) Excel 計算式を教えて下さい 3 2022/12/15 19:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報