アレルギー対策、自宅でできる効果的な方法とは?

エクセルで表からランダムでセルを抽出したいのですが、
空白がある表になっており、空白を避けて抽出したいです。
INDEXとRANDBETWEENだけでは空白も抽出されてしまいます…

質問者からの補足コメント

  • コメントありがとうございます。
    ある表は一列になります。(A1~A5)
    表にはvlookupで引っ張ってきた文字列が表示されます。
    この時、条件に合わないセルは空白になります。(A1~A5間で約1~2個)

    最初、空白が右側(A5側)にしか表示されないような表だったので
    結果を出したいセルには下記の関数を入れておりました。
    =IFERROR(INDEX(A1:A5,randbetween(1,5-COUNTBLANK(A1:A5))),"")

    ところが、空白セルは点々と発生するようになってしまい、
    この関数が使えなくなってしまいました。

      補足日時:2017/07/14 19:26
  • うーん・・・

    説明が足りずすいません…
    上はわかりやすく説明しようとしただけなので、
    実際の表のデータ数はもう少し多いです。
    まぁ、それでも上記の例えの3~5倍ほどの数ですが。。

      補足日時:2017/07/14 21:00

A 回答 (3件)

》 上はわかりやすく説明しようとしただけ…


ちっとも、分かり易い説明になっていません!

添付図参照
C1: =IFERROR(INDEX(A:A,SMALL(IF(A:A<>"",ROW(A:A),""),ROW(A1))),"")
 ̄ ̄【お断り】上式は必ず配列数式として入力のこと
D1: =IF(C1="","",RAND())
E1: =IF(D1="","",SMALL(D:D,ROW()))
F1: =INDEX(C:C,MATCH(E1,D:D,0))

列Aが「空白がある表」
列Cは、列Aを空白がない表にしたもの
列Fは、列Cをランダムに抽出したもの

ファンクションキー F9 をツンツンしてみてください。
「エクセル INDEXとRANDBETWE」の回答画像3
    • good
    • 1
この回答へのお礼

助かりました

質問も不慣れで、失礼いたしました…。
またご回答ありがとうございます。
とてもわかりやすく、解決致しました!!!
助かりました。
本当にありがとうございます。

お礼日時:2017/07/14 23:37

》 ある表は一列になります。

(A1~A5)
「ランダムでセルを抽出」と仰っていたので、数百行のデータから抽出なんだろうと推測していましたが、僅か5行ですか!「A1~A5間で約1~2個」が空白となると抽出可能なデータは僅か3個!?
INDEX(A1:A5,randbetween(1,3)) だと、連続して同じデータを抽出することもありそうですが、ソンナンで構わないのですか?ランダムと言えそうにないけど。
    • good
    • 0

貴方が考えていた「INDEXとRANDBETWEENだけ」の具体的な方法をお示しください。


それをどのように応用すれば好いかを考えます。
貴方の「空白がある表」が空白だらけでは使い物にならないし、「ある表」が1列(あるいは1行)なら簡単だけど、複数列(行)に亘るものなら難解なものになりそうなので、使い物になりそうな「空白がある表」を例示してみてください。
    • good
    • 0

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

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

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

Qエクセルで三つの条件での参照する方法。 お世話様です。 コード 項目 7月 8月 9月 10月 11

エクセルで三つの条件での参照する方法。
お世話様です。

コード 項目 7月 8月 9月 10月 11月 12月
1234 野菜 8 11
9876 肉類 5 4
小計 5 8 11 4
2345 魚類 12 8
3456 麺類 1 6
小計 1 6
合計

このようなデータがあります。
コードは1000くらいあります。
小計も100くらいあります。

別シートにこれよりも項目が多い表があります。
この表に上記データを反映させたいです。

作業列を作りコードと項目を&で合体させ
ます。
それを検索値とし、別シートの7月の列にvlookup関数にします。
コードの列をフィルタ掛けし小計、合計を非表示にします。
貼り付け。

これを月別に貼り付けしようと思います。
他に効率良い方法ありますか?
言葉足らずな点は補足します。
よろしくお願いいたします。

エクセルで三つの条件での参照する方法。
お世話様です。

コード 項目 7月 8月 9月 10月 11月 12月
1234 野菜 8 11
9876 肉類 5 4
小計 5 8 11 4
2345 魚類 12 8
3456 麺類 1 6
小計 1 6
合計

このようなデータがあります。
コードは1000くらいあります。
小計も100くらいあります。

別シートにこれよりも項目が多い表があります。
この表...続きを読む

Aベストアンサー

素朴な確認をば。
小計行の数値 5、8、11、4 はどのセルとどのセルとの小計になっているの?
「あれは、単に書いたまでで、実はデタラメ!」なんて言わないでネ。回答者は真剣なので。

QExcelでの貼り付けについて

下記のようなデータをそのままの表示でExcelに張り付けたいのですがうまくいきません。

12345678
123456789123.0
123456789123.7

これをそのままExcelへ張り付けると、
12345678
1.23457E+11
1.23457E+11

と表示されます。

そこで表示形式を数値にして、小数点以下の桁数を1にすると
12345678.0
123456789123.0
123456789123.7
と1番上の整数にまで、小数点0がついてしまいますし、


[データ]-[区切り位置]-[文字列]で文字列に変換すると
12345678
123456789123
123456789123.7

2番目の.0が消えてしまします。
実際には膨大なデータ数があるので、できれば.0が付いているものについてだけ、数値に変換するのは避けたいです。
何か他に良い方法はないでしょうか。
ご教示頂けましたら幸いです。

Aベストアンサー

テキストデータだったら、
行の先頭にシングルコーテーションを置換できますよ^^

http://hodade.com/seiki/page.php?r_gyoutou_tsuika

テキストエディタで、正規表現を使用して
「^」先頭→「'」に置き換えです。

それをコピーしてエクセル貼ってはいかがでしょうか。

QEXCELで複数の表からの集計

ある製品αは複数のUNIT(A~C)で構成され、各UNITは複数の部品(あ~お)で構成されるとします。
添付画像のような製品、UNIT構成の場合に製品αを構成する部品数はどのように集計すればよいのでしょうか。

Aベストアンサー

No.8です。

>表に空欄があっても問題ないのでしょうか?

もちろん空白があっても問題ないはずです。
前回の画像の配置で、行方向・列方向にはいくらデータがあっても対応できます。
ただ投稿後思ったのですが、
D列「PART」のデータが各「UNIT」にすべて存在すれば問題ないのですが、
D列データが「UNIT」の中に存在しない!というコトはないですよね?
そうであれば前回のコードで大丈夫なのですが、万一「UNIT」にない場合のエラー処理のために
↓のコードに変更してみてください。

Sub Sample2() '//この行から//
Dim i As Long, k As Long, lastRow As Long
Dim c As Range, r As Range
lastRow = Cells(Rows.Count, "D").End(xlUp).Row
If lastRow > 2 Then
Range(Cells(3, "E"), Cells(lastRow, "E")).ClearContents
End If
For i = 3 To Cells(Rows.Count, "A").End(xlUp).Row
Set c = Rows(2).Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
For k = 3 To Cells(Rows.Count, "D").End(xlUp).Row
Set r = Columns(c.Column).Find(what:=Cells(k, "D"), LookIn:=xlValues, lookat:=xlWhole)
If Not r Is Nothing Then '//←追加★//
With Cells(k, "E")
.Value = .Value + r.Offset(, 1) * Cells(i, "B")
End With
End If '//←追加★//
Next k
Next i
End Sub '//この行まで//

※ 「★」の行を追加しただけです。
「UNIT」にD列データがない場合の処理を追加しました。m(_ _)m

No.8です。

>表に空欄があっても問題ないのでしょうか?

もちろん空白があっても問題ないはずです。
前回の画像の配置で、行方向・列方向にはいくらデータがあっても対応できます。
ただ投稿後思ったのですが、
D列「PART」のデータが各「UNIT」にすべて存在すれば問題ないのですが、
D列データが「UNIT」の中に存在しない!というコトはないですよね?
そうであれば前回のコードで大丈夫なのですが、万一「UNIT」にない場合のエラー処理のために
↓のコードに変更してみてください。

Sub Sample2() '//この行...続きを読む

Q【Excel】右上がりの罫線を引く

セル「M10」に”無”と入力されると、セル「M11」のセルに右上がりの罫線を引きたいです。
どうぞよろしくお願いいたします。

Aベストアンサー

こんにちは!

VBAになりますが、一例です。
シートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$M$10" Then
With Range("M11").Borders(xlDiagonalUp)
If Target = "無" Then
.LineStyle = xlContinuous
Else
.LineStyle = xlNone
End If
End With
End If
End Sub

※ 対象セルはM10だけでよいのですよね?m(_ _)m

Qエクセル 論理式

エクセルで

A1*B1が100未満の時は100と表示、そうでないときはそのまま計算
という場合
=IF(SUM(A1*B1)<100,100,SUM(A1*B1))
になると思うんですけど、

この場合、
A1B1に入力データが無い時(計算してほしくないとき)でセル値が空白の場合も100と計算されてしまいますよね。

例えばそれを、
A1*B1が100未満の時は100と表示、そうでないときはそのまま計算、しかしセル値が空白で計算結果が0(100未満該当)のときは計算しないもしくは0と表示。
みたいにする方法はありますか?

Aベストアンサー

=(A1*B1>0)*MAX(A1*B1,100)
または
=IF(A1*B1,MAX(A1*B1,100),0)

Qエクセル SUMPRODUCT関数について

SUMPRODUCT関数を使い、以下の合計を件数を出したいのですが、いろいろ調べてもよくわかりませんのでご教示をお願いいたします。(エクセル2010使用)

【やりたいこと】
以下の表を使用し、「みかん」と「ばなな」を購入した件数を月ごとに合計して表示する関数を作りたい。4月の合計件数はB8セル、5月はB9セル、6月はB10セルに表示できるようにします。

     (A列)  (B列)
(行) 種類  購入日
 1  みかん 4月3日
 2  ばなな 4月15日
 3  りんご 5月6日
 4  りんご 5月30日
 5  ばなな 6月7日
 6  みかん 6月9日
 7
 8 【結果】 4月 2
 9      5月 0
10      6月 2

よろしくお願いします。

Aベストアンサー

こんにちは!

今回の質問の場合は「OR」条件になりますので、足し算にする必要があります。

↓の画像ではA8~A10セルの表示形式をユーザー定義から
0月
とし、単に4とか5という数値のみを入力しています。

B8セルに
=SUMPRODUCT((MONTH(B$1:B$6)=A8)*(A$1:A$6="みかん"))+SUMPRODUCT((MONTH(B$1:B$6)=A8)*(A$1:A$6="ばなな"))

という数式を入れフィルハンドルで下へコピーすると
画像のような感じになります。m(_ _)m

Qコピー&ペーストではなく数式やエクセルの機能を使ってデータを反映させたい。

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B C D E
1 氏名 日付 ログイン 日付 ログオフ
2 田中 舞子 2017/5/16 8:21:35 2017/5/16 17:34:38
3 田中 舞子 2017/5/17 8:22:40 2017/5/17 17:35:00
4 田中 舞子 2017/5/18 8:28:02 2017/5/18 17:35:55
5 田中 舞子 2017/5/19 8:22:09 2017/5/19 17:34:18
6 田中 舞子 2017/5/22 8:18:03 2017/5/22 17:33:13
7 三田 建造 2017/5/23 8:19:55 2017/5/23 17:39:44
8 三田 建造 2017/5/25 8:21:03 2017/5/25 17:38:04
9 三田 建造 2017/5/26 8:17:45 2017/5/26 17:31:54
10 三田 建造 2017/5/29 8:19:42 2017/5/29 17:32:39
11 三田 建造 2017/5/30 8:20:12 2017/5/30 17:33:26
12 牧 重三 2017/5/31 16:18:33 2017/5/31 23:31:36
13 牧 重三 2017/6/1 16:20:08 2017/6/1 23:35:33
14 牧 重三 2017/6/2 17:18:35 2017/6/2 23:41:05
15 牧 重三 2017/6/5 15:20:00 2017/6/5 23:31:54
16 牧 重三 2017/6/6 19:22:05 2017/6/6 23:41:14
17 長岐 知美 2017/6/7 8:25:48 2017/6/7 17:34:38
18 長岐 知美 2017/6/8 8:26:24 2017/6/8 17:36:52
19 長岐 知美 2017/6/9 8:26:01 2017/6/9 17:34:08
20 長岐 知美 2017/6/12 8:19:24 2017/6/12 17:32:02
21 篠田 亜紀 2017/5/21 8:19:14 2017/5/21 17:32:29
22 柿田 輝未 2017/5/28 7:34:55 2017/5/28 17:17:54
23 荒元 耕平 2017/6/4 7:32:49 2017/6/4 17:32:50
24 佐田 容子 2017/6/11 8:18:35 2017/6/11 17:41:05
25 藤島 澄人 2017/6/12 8:25:15 2017/6/12 17:59:55
26 藤島 澄人 2017/6/13 8:45:31 2017/6/13 17:41:06
27 藤島 澄人 2017/6/14 8:05:34 2017/6/14 17:28:14
28 藤島 澄人 2017/6/15 8:13:25 2017/6/15 17:30:24


表②
   A B C D E F G
1 田中 舞子 三田 建造 牧 重三 ・・・・
2 日付 ログイン ログオフ ログイン ログオフ ログイン ログオフ
3 2017/5/16 B3
4 2017/5/17
5 2017/5/18
6 2017/5/19
7 2017/5/20
8 2017/5/21
9 2017/5/22
10 2017/5/23
11 2017/5/24
12 2017/5/25
13 2017/5/26
14 2017/5/27
15 2017/5/28
16 2017/5/29
17 2017/5/30
18 2017/5/31
19 2017/6/1
20 2017/6/2
21 2017/6/3
22 2017/6/4
23 2017/6/5
24 2017/6/6
25 2017/6/7
26 2017/6/8
27 2017/6/9
28 2017/6/10
29 2017/6/11
30 2017/6/12
31 2017/6/13
32 2017/6/14
33 2017/6/15

下記の「表①」のエクセルデータを、「表②」に反映させたいです。
「表②」のB3セルに、数式を入れて、「表①」のログイン・ログオフ時刻を「表②」へ
自動反映させたいのですが、どのような式を入れたらいいかがわかりません。

現状は、目視とコピー&ペーストで表①→表②へ貼りつけていますが、
スタッフの数が多いのとシフト勤務で出勤日数も時間もバラバラで、作業が大変です。

また、早くて正確なら他の方法でもいいです。
よろしくお願いします。


表①
A B ...続きを読む

Aベストアンサー

表①のB列ですが、シリアル値「2017/5/16 8:21:35」を表示形式で「2017/5/16」と表示していませんか?もしそうであればNGです。B2セルは時刻の部分をゼロにしてください。

2人ログオンする日がある件ですが、残念ながら、この方式では実現できません。
No.1 chonamiさんの案が一番簡単そうです。たぶん、こんな感じを想定していると思われます。

【B3セル】=SUMIFS(表①!$C:$C,表①!$A:$A,B$1,表①!$B:$B,$A3)
※C3セルは、上記を参考にご自分で考えてみて下さい。

Qエクセルの関数で

以下の算式を満たすエクセルの関数を教えていただけないでしょうか。

セルA1(①) セルA2(②) セルA3(③) セルA4(④) セルA5(⑤)


③=①-②
④=③÷② 小数点3位未満切り捨て
⑤ ④が0.05超の場合  0.09+((④-0.05)×0.3  (上限0.1) 小数点3位未満切り捨て
④が0.05以下の場合 0.09-((0.05-④)×0.1  (下限0.06) 小数点3位未満切り捨て


ここの⑤を満たす式を教えてください。

例えば①531,116,991②646,729,949のとき⑤は0.067となります。

よろしくお願いいたします。

Aベストアンサー

0.05超の場合の式…⑥
0.05以下の場合の式…⑦
IF(④>0.05,IF(⑥>0.1,ROUNDDOWN(⑥,×),0.1),IF(⑦<0.06,0.06,ROUNDDOWN(⑦,×)))

×部分はうろ覚えです、小数点第三位なら「3」…ですかね…?

以上でどうでしょう

Q西暦をS〇〇年〇月〇日へ

1964/11/10と入力していましてこれを
S39年11月10日と表示したいのですがどうすればいいのか教えて下さい。

Aベストアンサー

セルの書式設定でユーザ定義を加えれば、
お望みどおりの表示形式が作成できます。

Qエクセルで休憩時間を引く時と、引かない時の数式

エクセルで、
「出~退」が4時間以内なら、その間の時間が表示され、
「出~退」が4時間を超えるなら、その間の時間から休憩1時間を引いた時間が表示されるようにしたいです。

「稼働時間」のセルは、どのような数式にすれば良いですか。

氏名 日付 出 退 稼働時間
三田 建造 2017/5/30 8:22 17:33 8:11
藤島 澄人 2017/5/30 9:00 12:57 3:57

Aベストアンサー

E2: =D2-C2-"1:0"*(D2-C2>"4:0"*1)


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

人気Q&Aランキング

おすすめ情報