プロが教えるわが家の防犯対策術!

Googleスプレッドシートで、添付のような資料を作りたく思っています。
B列、C列、D列でそれぞれ★がついたら1行目の値を★がついた行のE列に表示させたいです。
どのようにやればいいのか見当もつかないため、ぜひ教えて下さいませ。

(それぞれの人に3つずつ欲しいものに〇をしてもらい、こちらで諸条件を考えた上で当選者に★をつけるフローなのですが、最終的にはE列だけあればいいようにしたいという感じです。一つの商品は一人しか当たらず、人為的ミスで★を二人につけてしまうことは考えなくて大丈夫です。)

「Google スプレッドシートで特定の文」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは!



Googleスプレッドシートで出来るかどうか判りませんが、Excelでの場合の一例です。

E2セルに
=IF(COUNTIF(A2:D2,"★"),INDEX(A$1:D$1,,SUMPRODUCT((A2:D2="★")*COLUMN(A2:D2))),"")
という数式を入れフィルハンドルで下へコピー!

これではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

助かりました

ありがとうございます。Google スプレッドシートでもできました!感激です。魔法みたいです笑
INDEX、SUMPRODUCT、COLUMNがお恥ずかしながら初のため、
ちょっと勉強したいと思います。ありがとうございます!!

お礼日時:2016/05/09 11:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QGoogleスプレッドシートでの抽出について

Googleスプレッドシートで参加者のリストを作成したいのですが、添付画像にあるように
それぞれが月~金に参加の可否を○×でプルダウン形式で選択し、コメント欄に文章を入力します。

そこで、画像下部のように各曜日の○が選択されてる人物の名前とコメント欄を抽出したいのですがどうすればいいのでしょうか?

分かる方いらっしゃいましたら回答をお願いします。

Aベストアンサー

Googleスプレッドシートには,エクセルにはない便利な関数が幾つかあります。

B11:
=filter(A2:A8,B2:B8="○")
C11:
=filter(G2:G8,B2:B8="○")
とそれぞれ記入します。
B12やC12以下には自動でcontinue関数が追加され,希望の結果が得られます。

Q条件に該当するセル(を含む列)を別シートに転記

Excel(正しくはGoogleスプレッドシート)で、以下のような表を作成する方法について教えていただきたいです。
-----------------------------------
Sheet1
___A_│_B_
1│商品名│状況_
2│イチゴ│入荷済
3│スイカ│入荷待
4│ナシ_│入荷待
5│ブドウ│入荷待
6│ミカン│入荷済
7│モモ_│入荷済
8│リンゴ│入荷待
-----------------------------------
Sheet1には「商品名」と「状況(入荷待or入荷済)」が記入されています(商品名はアイウエオ順に並んでおり、今後も増えていく予定です)。
この「状況」が「入荷待ち」のもののみをSheet2に転記し、かつ入荷予定日を記入する欄を追加したいです。
-----------------------------------
Sheet2
___A_│_B_│__C__
1│商品名│状況_│入荷予定日
2│スイカ│入荷待│4月18日_
3│ナシ_│入荷待│4月15日_
4│ブドウ│入荷待│4月17日_
5│リンゴ│入荷待│4月15日_
       ↓
___A_│_B_│__C__
1│商品名│状況_│入荷予定日
2│スイカ│入荷待│4月18日_
3│ナシ_│入荷待│4月15日_
4│ブドウ│入荷待│4月17日_
5│メロン│入荷待│4月15日_
6│リンゴ│入荷待│_____
※Sheet1にメロンを追加するとSheet2のC列がズレてしまう
-----------------------------------
「入荷待ち」のもののみをSheet2へコピーすることはできたのですが、商品名と状況の欄は増えても入荷予定日欄が増えず、新しく商品が追加された場合に商品名&状況と入荷予定日の欄がズレてしまいます。
具体的な例を出しますと(各シート商品名のセルをA1として)Sheet1に「入荷待」の「メロン」が追加された場合、Sheet2のA5に「メロン」B5に「入荷待」がコピーされますが、C5は追加されないため「4月15日」のままになり、リンゴの入荷予定日が空欄となってしまいます。本来はC5を空欄(メロンの入荷予定日を記入する)に、C6はリンゴの入荷日として4月15日をズラしたいのですが…。

現在使っている関数はネット上で拾ってきたもののため自分でもよくわかっておらず、また関数ではC列の行の追加はできない雰囲気のため1から作りなおすつもりです。
おそらくVBAなどを使う必要があるのではないかと思っておりますが、解決方法をご教授いただけると幸いです。

Excel(正しくはGoogleスプレッドシート)で、以下のような表を作成する方法について教えていただきたいです。
-----------------------------------
Sheet1
___A_│_B_
1│商品名│状況_
2│イチゴ│入荷済
3│スイカ│入荷待
4│ナシ_│入荷待
5│ブドウ│入荷待
6│ミカン│入荷済
7│モモ_│入荷済
8│リンゴ│入荷待
-----------------------------------
Sheet1には「商品名」と「状況(入荷待or入荷済)」が記入されています(商品名はアイウエオ順に並んでおり、今後も増えていく予定です)。
この「状況」が...続きを読む

Aベストアンサー

シート1に入荷予定日、入荷日を入力するようにすれば、filter関数で自動的にシート2に入荷待表を作成出来ます。
シート1で入荷日を入力すると入荷済と表示され、シート2に抽出したデータからも項目が削除されます。

添付図に沿った数式説明となります。(上段がシート1 下段がシート2)
シート1
B2式=if(A2<>"",if(D2<>"","入荷済","入荷待"),"")
下方にフィルコピー


シート2
A2(品名)式=filter('シート1'!A:A,'シート1'!B:B="入荷待")
B2(状況)式=filter('シート1'!B:B,'シート1'!B:B="入荷待")
C2(予定日)式=filter('シート1'!C:C,'シート1'!B:B="入荷待")

抽出関数は下方へのコピペをしなくても=CONTINUEで自動的に下方の式が作成されます。

シート1 C、D列 、 シート2 C列は日付を表示する列なので表示型式の詳細設定で09/26日を選択しています。

不要な情報であればスルーして下さい。

QGoogleスプレッドシートでセルの文字数の関数

こんにちは。
エクセル系にあまり詳しくないもので教えてください。

現在Googleスプレッドシートを使っているのですが、
セルに入力した文字の「文字数」を表示したいです。

例えばA1セルに500文字日本語を入力していると、
A2セルに「500」と出るようにしたいのですが、
この場合どのような関数を書けばよいでしょうか?

詳しい方ご伝授いただけると助かります。
宜しくお願い致します。

Aベストアンサー

=len(セルの番号)でできませんか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q【Excel】複数の列を参照して、特定の文字列を含む行全体を別シートに抽出する関数

左画面(Book2)のようなシートがあります。

Book2の中で列D・列F・列Iの3列を参照し、別シート(Book4)のA1セルに入力した文字列と一致する文字を含む行全体を、Book4のA3セル以下に抽出するための関数を探しています。

画像の例は、「北海道」という文字列を3列のいずれかに含む行だけを手動で貼り付けたものなのですが、この処理を関数を用いて自動で行いたいのです。

参照したい文字列(北海道)は、3つの列にランダムに含まれている状態です。

元データ(Book2)を更新すれば、別シート(Book4)がリアルタイムに自動で生成されるようにしたいので、関数を使った方法で行いたいと思っています。

ご教示お願い申し上げます。

Aベストアンサー

こんばんは!
一例です。
元データは「Book2」のSheet1にあり、表示するのは「Book4」のSheet1とします。
Book4・Sheet1のA1セルに検索したい文字列を入力し、そのデータを表示させます。
(今回は画像通り”北海道”と入力しておいてください)

Book2のSheet1のJ列を作業用の列として使用します。
J3セルに
=IF(COUNTIF(D3:H3,[Book4.xlsx]Sheet1!$A$1),ROW(),"")
という数式を入れフィルハンドルでこれ以上データはない!という位まで下へコピーしておきます。

そしてBook4、Sheet1のA4セルに
=IFERROR(INDEX([Book2.xlsx]Sheet1!A:A,SMALL([Book2.xlsx]Sheet1!$J:$J,ROW(A1))),"")
という数式を入れ、列・行方向にフィルハンドルでコピーしてみてください。

※ 作業列が目障りであれば遠く離れた列に設けるか
非表示にしておきます。m(_ _)m

QGoogle Spreadsheetで他のシートから値を参照したい

Google Spreadsheetの使い方に関しての質問です。

シートを複数作成して、あるシートのセルの値を
別のシートのセルに反映させることはできるのでしょうか?
公式のヘルプなどで検索もしてみたのですが
期待する情報は得られませんでした。

もし可能なら詳しいやり方を教えてくだされば助かります。

Aベストアンサー

「=」をキー入力したあとに、別シートのタブをクリックして
シートを切り替えて、反映させたいセルをクリックして「Entet」
キーを押します。
これ、Excelなどと同じ操作です。

もし、ご質問の意味が違うようでしたら、補足してください。

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q複数の文字列のいずれかが含まれていたらTRUEを返す関数について

複数の文字列のいずれかが含まれていたらTRUEを返す関数について
エクセル2003を使用しています。
B列に例えば住所が入力されていて、「東京都北区」「千代田区」「東村山市」等いくつかの文字列のいずれかが含まれていたら、A列にTRUEを返すということをしたいのですが方法がわかりません。
単純なことのような気がするのですがどうしても思いつきません。よろしくお願いいたします。

Aベストアンサー

こうかなあ。。。
A2セル
=OR(SUBSTITUTE(B2,$D$2:$D$4,"",1)<>B2)
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
下へオートフィル

D2:D4に文字列を入力しておく

QGoogleスプレッドシートで特定のセルが条件を満たした時に指定したアドレスにメールを送る

GoogleスプレッドシートでTODOリストを作成しています。

たとえばタスクの期限が近づいてきた時に(3時間前など)に指定したメールアドレスにメールを
送る(ハングアウトで通知されるとか、ユーザーに直接連絡が行けばなんでも構いません)
ようなスクリプトや、条件付き書式設定など?

方法はございますでしょうか?

スプレッドシートだけでなくても、GoogleカレンダーやIFTTTなどといった他のサービスとの複合でもアイデアがあればぜひご教授頂きたく存じます。

Aベストアンサー

独学がてら原理動作を作ってみました。(添付画像、後記スクリプト)
太字の日時を現在日時の3時間前後に設定し、「期限チェック」ボタンを押すと、期限まで3時間以内なら添付画像のように「警告」表示されメールが送信されました。
注意点は、期限の表示形式を本来の日付や日時にすると判定ができなかったため書式なしテキストとしました。

スプレッドシートを開いたイベントに処理を割り当てるという仕組みは見つけられませんでした。
周期処理も同様のため、自動ではなく上記のようにボタンを押すという手動の実装を行いました。
当然開きっぱなしでは実行されないことになります。

メールについては、下記も参考になります。
https://developers.google.com/apps-script/overview#set_it_up

セルの読みは下記が参考になります。
https://developers.google.com/apps-script/guides/sheets#reading_data

GoogleスクリプトはベースはJavascriptのようなので、Javascriptの仕様も参考になると思います。

あとは、上記等、勉強して補って下さい。
Googleの捨てアカウントがあるなら、原理動作したものを編集者権限(動作させることができる)で共有できます。

ちなみにここまで作って気づきましたが、Googleカレンダーの予定にメールの通知機能があります。
ただ、通知は最短で1日前です。
でも、ポップアップによる通知も設定できるため、もしかしたらこちらは開きっぱで通知されるかもしれません。
とはいえ、1日前にポップアップされてもですが。。。

-----スクリプト
function CheckExpiration() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
expire = new Date(data[1][1]);
now = new Date();
timeExpire = expire.getTime();
timeNow = now.getTime();
judge = sheet.getRange("C2");
judge.setValue("");

if (timeExpire - timeNow <= 1000 * 60 * 60 * 3)
{
judge.setValue("警告")
Notify();
}
}

function Notify()
{
// Create a new Google Doc named 'Hello, world!'
var doc = DocumentApp.create('Hello, world!');

// Access the body of the document, then add a paragraph.
doc.getBody().appendParagraph('This document was created by Google Apps Script.');

// Get the URL of the document.
var url = doc.getUrl();

// Get the email address of the active user - that's you.
var email = Session.getActiveUser().getEmail();

// Get the name of the document to use as an email subject line.
var subject = doc.getName();

// Append a new string to the "url" variable to use as an email body.
var body = 'Link to your doc: ' + url;

// Send yourself an email with a link to the document.
// GmailApp.sendEmail(email, subject, body);
Logger.log("Send Email");
}

独学がてら原理動作を作ってみました。(添付画像、後記スクリプト)
太字の日時を現在日時の3時間前後に設定し、「期限チェック」ボタンを押すと、期限まで3時間以内なら添付画像のように「警告」表示されメールが送信されました。
注意点は、期限の表示形式を本来の日付や日時にすると判定ができなかったため書式なしテキストとしました。

スプレッドシートを開いたイベントに処理を割り当てるという仕組みは見つけられませんでした。
周期処理も同様のため、自動ではなく上記のようにボタンを押すという手動の実...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング