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

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

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

1回答

330閲覧

ある値にマッチしたセルに対して、指定のセルを選択する方法をexcelの関数で作成したい

amatsuno

総合スコア54

0グッド

0クリップ

投稿2022/01/18 01:51

編集2022/01/19 10:04

イメージ説明# やりたいこと
excelのシート上に日付と値のセルがあり、日付毎にその値を別シートに出力したい
(vbaなどではなく、関数で実現したい)

シート内のデータ

 元シート以下の配置となっています(左側の1~9と上部のA~Cは行番号・列番号)

シートA
A B C
1 1/1 1/2 1/3
2 10    42
3 20 31
4 30 41 62
5 1/4 1/5 1/6
6 33 61 77
7 43 62 88
8 53 99

作成したい形

これを、シートBで以下のように表示させたいと思っています

A B

1 1/1 10
2 1/1 20
3 1/1 30
4 1/2
5 1/2 31
6 1/2 41
7 1/3 42
8 1/3
9 1/3 62
(以下、続く)

ここまでにできたこと

A列側は、
・シートAのA1を指定してA1を指定
・A2とA3はA1と同じ
・A4はA1+1
・A5とA6はA4と同じ
で作成できました

#わからないこと

B列側をどのようにすれば可能になるのかがわからないため、
お分かりになられるかた、ご教授願えませんでしょうか

関数の想定

関数は上記と想定しています
シートBのA列の値を見て、
・A列の値と一致するセルの1つ下がB1
・A列の値と一致するセルの2つ下がB2
・A列の値と一致するセルの3つ下がB3
を作成して、この3つを1セットでコピーして貼り付けていけばいいのかと思っています

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

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

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

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

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

guest

回答1

0

ベストアンサー

シートBのA列に下記の式

EXCEL

1=INDEX(シートA!$A$1:$C$100,QUOTIENT(ROW()-1,9)*4+1,MOD(QUOTIENT(ROW()-1,3),3)+1)

B列に下記の式

EXCEL

1=INDEX(シートA!$A$1:$C$100,QUOTIENT(ROW()-1,9)*4+1,MOD(QUOTIENT(ROW()-1,3),3)+1)

でどうでしょう。

シートA
イメージ説明
シートB
イメージ説明

投稿2022/01/18 04:27

編集2022/01/18 07:04
hatena19

総合スコア33620

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

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

amatsuno

2022/01/18 05:05

すいません。 1/1 1/2 1/3は分数ではなく日付です (QUOTIENTがあったので、確認の返答です)
hatena19

2022/01/18 06:08 編集

はい、日付で大丈夫です。 ROW関数で行番号を取得してそれをもとに参照するセルの行番号、列番号を計算しています。 QUOTIENTは商の整数部を取り出す関数です。
amatsuno

2022/01/18 06:31

すいません。 日付以外の値が数値以外(文字列)の場合は、こちらはうまくいかないのでしょうか?
amatsuno

2022/01/18 06:32

文字絵r津がうまく取れなかったので、確認させていただきました
hatena19

2022/01/18 07:04 編集

セルの値が文字列でも大丈夫です。 うまく表示されない場合は、セルの表示書式を確認してみてください。 文字列なら「標準」か「文字列」いいはずです。 当方のサンプルではうまくいってます。
amatsuno

2022/01/18 07:26

すいません。 実際のexcelでは、 データの開始範囲が「c3:h600」で 表示の出力箇所がA列とD列になります (質問でB列記載の個所がd列になります) ご回答いただいたうちのシートBの内容が、A列とD列に出力される状態になります この時、どの値を変更すればよいのでしょうか =INDEX(シートA!$A$1:$C$100,QUOTIENT(ROW()-1,9)*4+1,MOD(QUOTIENT(ROW()-1,3),3)+1) 第1引数は$A$1:$C$100→$C$3:$H$600でいいと思われるのですが、それ以外がわからなくて申し訳ございません
hatena19

2022/01/18 07:50

データの開始範囲が「c3:h600」ということは、データは6列あるということですか。 出力箇所はA列とD列の1行目からですか。 他に質問の内容と異なっていることはないですか。 現状のシートの画像をアップしてもらった方がすれ違いがないように思います。 せっかく時間をかけて式を作成しても実は違ったとなると時間の無駄ですので。
hatena19

2022/01/18 07:51

最終的には、式の意味を理解して、仕様に合わせて自分で式を作れるようにしてください。 そうでないと仕様変更があった場合に困りますよね。
amatsuno

2022/01/18 08:21

すいません。 関数投入予定のシートを本文最上部に置きました
hatena19

2022/01/18 09:53

シート画像をみると、一ヶ月分のデータということですね。 データ範囲は「B3:H30」となると思いますが、上のコメントとは違ってますね。 なんか、土日祝日は飛ばしてなどいう条件が出てきそうな雰囲気濃厚。 とりあえず、先のコメントのC列からH列にデータがあるということで式を作成しましたので、 これを参考に修正してください。 A列 =INDEX(シートA!$C$3:$H$80,QUOTIENT(ROW()-1,6*3)*4+1,MOD(QUOTIENT(ROW()-1,3),6)+1) D列 =INDEX(シートA!$C$3:$H$80,QUOTIENT(ROW()-1,6*3)*4+MOD(ROW()-1,3)+2,MOD(QUOTIENT(ROW()-1,3),6)+1)
amatsuno

2022/01/19 01:04

ありがとうございます。 実際は月曜日が不要だったのですが、 月曜日も入れて作成を行おうとしたところ、 結果が5日分ずれたもので表示されました (土日祝日はそのまま使用します) ※シートAで1/11の情報が、シート2では1/16のところに表示される 下記の変更であっていますでしょうか (C~H列をB~H列に変更) =INDEX(シートA!$B$3:$H$800,QUOTIENT(ROW()-1,7*3)*4+MOD(ROW()-1,3)+2,MOD(QUOTIENT(ROW()-1,3),7)+1)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問