質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Q&A

1回答

2599閲覧

チェックボックスにチェック入れたデータを別シートに転記したい

ibuki5562

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

0グッド

0クリップ

投稿2023/03/20 04:54

編集2023/03/20 05:10

実現したいこと

グーグルのスプレットシートで納品書管理をしています。
シートAのチェックボックスにチェックを入れるとその行のデータをシートBに転記されるようにしたい。
以降チェック入れるとシートBの最後尾の行に転記されていくというもの

ネットで検索したのを参考に入れたのですが、
何から修正していいかもわかりません。

Sub チェックボックスのチェックをいれたものを転記()
Sheets("シート4").Range("A3:R10000").ClearContents

For i= 1 To Sheets("納品書").CheckBoxes.Count

// @ts-ignore
If Sheets("納品書").CheckBoxes("チェック" & i).Value = xlOn Then

With Sheets("シート4").Cells(Rows.Count, "A").End(xlUp)
Sheets("納品書").Cells(i + 1, "B").Resize(, 3).Copy .Offset(1, 0)
End With
End If
Next

試したこと:ネットで検索したもののシート名を変更し入力しましたがエラーが出てできませんでした。

依頼:
APP script で使用できるように教えて欲しいです。
そもそもマクロ設定を使用して別シートに転記ができるのか、
どの用語を使用したらいいのか?
正しいものを教えて欲しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ibuki5562

2023/03/20 05:11

なにぶん超初心者なので何がわかっていないかも、どのような用語で検索をしたらいいかも難しい状況です。
guest

回答1

0

※ChatGPTのGPT-4を使って回答をしていますので、スパムではありません。
スパムと回答された方はその前にこの問題を解決してあげてみてはいかがでしょうか。

GAS使用して実現可能です。
以下のコードは、シートAのチェックボックスにチェックが入れられたら、その行のデータをシートBに転記する例です。
なお、Apps ScriptではJavaScriptの構文が使用されます。

まず、シートAのチェックボックスを設定する必要があります。
チェックボックスを作成するには、シートAで適切なセルを選択し、「挿入」メニューから「チェックボックス」を選択します。

次に、Google Apps Scriptのエディタを開き、以下のコードを貼り付けてください。

function copyCheckedRows() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シートA");
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シートB");
var sourceData = sourceSheet.getDataRange().getValues();

for (var i = 0; i < sourceData.length; i++) {
if (sourceData[i][0] === true) { // チェックボックスがチェックされている場合
var rowValues = sourceData[i].slice(1); // チェックボックスを除いた行のデータを取得
targetSheet.appendRow(rowValues); // シートBに行を追加
sourceSheet.deleteRow(i + 1); // シートAから元の行を削除
i--; // 削除された行を考慮
}
}
}

このコードでは、シートAとシートBという名前のシートがあることを前提としています。必要に応じて、シートの名前を変更してください。

このコードを実行するには、Apps Scriptエディタの「選択した関数を実行」ドロップダウンリストからcopyCheckedRowsを選択し、「実行」ボタンをクリックします。

また、このコードをGoogleスプレッドシートのボタンにリンクさせたい場合は、以下の手順で設定してください。

1.シートAにボタンを挿入します。ボタンを挿入するには、「挿入」メニューから「図形」を選択し、適切な図形を選択してシートに挿入します。
2.ボタンをダブルクリックし、ラベルを適切なテキストに変更します(例:「行をコピー」)。
3.ボタンを右クリックし、「スクリプトにリンク」を選択します。
4.ダイアログボックスにcopyCheckedRowsと入力し、「OK」をクリックします。

これで、ボタンをクリックすることで、シートAのチェックボックスがチェックされた行がシートBに転記されるようになります。

上記のコードと手順に従って、Googleスプレッドシートで納品書管理を行うことができます。
必要に応じてコードを調整し、シート名やセル範囲などを変更して、手持ちのスプレッドシートに適した設定にしてください。

投稿2023/03/20 07:32

編集2023/03/20 12:15
quiz

総合スコア269

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ibuki5562

2023/03/23 10:58

ありがとうございます。 やりたいことがうまく説明できておらずすみません。 追加でお尋ねしたいのですが、(箇条書きにさせていただきます) ① 全体の納品書のデータはそのままにしておきたいのでチェックして転記したものを消去するという行を削除すればいいのかなと思ったのですがそれで合ってますか? ② 現在シートが全体の納品書、3月販売されたものがあり、今後4月、5月と販売されたものを管理したいためにチェックボックスを入れたものをそのタイミングで転記したくて、過去のものまで反映されないようにすることは可能ですか? チェックして転記されたものを3月末にコピーして3月売れたもののシートを作成し、一旦全部消去して4月に販売されたものをチェックして転記したいです。 もしくは作成していただいた転記されるシート名を3月から3月に変更して実行すればいいのかと思うのですが、いずれにせよ既にチェックした項目が転記されないようにするにはどうすればよいか教えていただけますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問