• ベストアンサー

エクセル

表示するコードを教えてもらい画像のように作成できることが できたのですが A2 =IFERROR(INDEX(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1, SMALL(INDEX(MOD(WEEKDAY(($A$1&$B$1&"1日")*1+ROW ($A$1:$A$31)-1,1),2)*50+ROW($A$1:$A$31),0),ROW(A1))),"") B2=A2で作成しています 2月の時だけ次の月の最初の部分が出ることがあります どうにかならないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>表示するコードを教えてもらい画像のように作成できることができたのですが マクロじゃないので「コード」ではなく「数式」です。 A2セルの数式内で使用している ROW($A$1:$A$31) を可変にすることで対応します。 ROW($A$1:$A$31)     ↓ ROW(OFFSET($A$1,0,0,DAY(EOMONTH(($A$1&$B$1&"1日")*1,0)))) または ROW(INDIRECT("$a$1:$a$"&DAY(EOMONTH(($A$1&$B$1&"1日")*1,0)))) 従って、A2セルの数式を次のように修正します。 =IFERROR(INDEX(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1,SMALL(INDEX(MOD(WEEKDAY(($A$1&$B$1&"1日")*1+ROW(OFFSET($A$1,0,0,DAY(EOMONTH(($A$1&$B$1&"1日")*1,0))))-1,1),2)*50+ROW(OFFSET($A$1,0,0,DAY(EOMONTH(($A$1&$B$1&"1日")*1,0)))),0),ROW(A1))),"") または =IFERROR(INDEX(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1,SMALL(INDEX(MOD(WEEKDAY(($A$1&$B$1&"1日")*1+ROW(INDIRECT("$a$1:$a$"&DAY(EOMONTH(($A$1&$B$1&"1日")*1,0))))-1,1),2)*50+ROW(INDIRECT("$a$1:$a$"&DAY(EOMONTH(($A$1&$B$1&"1日")*1,0)))),0),ROW(A1))),"") 尚、外側のINDEX関数の範囲(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1)のROW関数については変更なしでも不都合は起らないはずです。

jikkenn
質問者

お礼

ありがとうございます 出来ました。

関連するQ&A

  • エクセル 関数式の応用

    こんにちは エクセル2010を使っています。 画像の様なデータがあって、次のような式を教えてもらいました。 =IFERROR(INDEX($B$1:$B$7,SMALL(IF($A$1:$A$7=C$1,ROW($A$1:$A$7)),ROW(A1))),"") 画像では A列 B列の データが7行目までなのですが、これを3万行まで広げようと次のような式に変更してみましたが上手く行きません。(空白が返される) =IFERROR(INDEX($B$1:$B$30000,SMALL(IF($A$1:$A$30000=C$1,ROW($A$1:$A$30000)),ROW(A1))),"") 詳しい方、教えていただけませんか? よろしくお願いします。

  • エクセル カレンダー 自動入力について

    シート1にカレンダー 、シート2に入所の部屋・氏名・時間・日程  退所も部屋・氏名・時間・日程入力したら自動でカレンダーに入るように作成しています。 入所に部分(緑色)はできたのですが下側の黄色の部分がうまくいきません。 すみませんが、よろしくお願いします。 緑色の所の関数⇒=IFERROR(IF(OFFSET(A5,MOD(ROW()-ROW(A$5)+1,8)*-1,0)="","",INDEX(Sheet2!$B:$B,SMALL(INDEX((Sheet2!$C$2:$I$20<>LOOKUP(10^5,A$4:A4))*10^5+ROW(Sheet2!$C$2:$I$20),),MOD(ROW()-ROW(A$5)+1,8)),)&""),"") 黄色い部分の所に関数を教えていただきたいのですが よろしくお願いします。

  • エクセル関数について

    A列とB列に氏名を入れてA列にあってB列にないものを取り出す為に=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNA(MATCH($A$2:$A$8,$B$2:$B$8,0)),ROW($A$2:$A$8)-1),ROW()-1),1),"")の関数をⅮ列に入れ下にオオートフィルしたのですが、思うように表示されません。  関数が間違っているのか判りません。 何か良い方法はあれば教えてください。

  • エクセルでこんなこと出来ますか?

    こんばんは、エクセル2010を使っています。 一人では、解けない問題が出てきたので、力を貸して頂けませんか? 画像の様なデータ (緑色の部分)があります。 ピンク色の部分に参照データが与えられると、それに関連したデータを、下行に抜き出したいのですが、条件があります、 E1 にマイケル と入力が有った場合まずは、A列から マイケルを探します。 そのマイケルの右列(B列)の値が、F1セルの値のプラスマイナス5以内(この画像では-3~+7)だった場合のみ、B列、C列を、E列、F列に、抜き出したいのです。 マイケルの値と関連セルの値のみなら =IFERROR(INDEX(B$1:B$30464,SMALL(IF(A$1:$A$30464=$E$1,ROW(A$1:A$30464)),ROW(A1))),"") と言う風な感じで抜き出せるのですが、B列の値がF1列のプラスマイナス5 と言う条件がつくと、解りません。 ちなみに、この作業は画像の通り、列方向に8パターン、同じ作業がありますので、改変部分が理解しやすければ嬉しいです。 詳しい方、教えて頂けませんでしょうか。 どうぞ、よろしくお願いします。

  • ExcelのSMALL関数について

    ExcelのB列(B2:B50)にフラグ「0」または「1」が入力されています。 フラグ「0」が入力されている行番号を関数を使用して取得したいと思っています。 B列のフラグは順次更新されており、フラグ「0」の個数は複数あります。 下記の関数式(以下多めにオートフィル)で上記のことができるようになったのですが、 =IF(COUNTIF(B$2:B$50,0)<ROW(A1),"",SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1))) SMALL関数式の部分↓↓の意味がよくわかりません。 SMALL(INDEX((B$2:B$50<>0)*10^5+ROW(B$2:B$50),),ROW(A1)) どなたかご教授いただけないでしょうか。

  • エクセル参照リンクについて

    先日質問しました内容ですが、「KURUMITO」さんよりすばらしい解答をいただきましてありがとう ございます。 (投稿日時 - 2013-06-21 13:45:07) あと一つご指導ください。 Sheet2にはA20行から次の1週間分があります。 この場合、下のどの部分を変更してB21に張り付ければいいのかよくわからず困っています。 ご指導ください 「KURUMITO」様の前回のご指導内容 例えばシート2のA1セルには楢崎、岡などの文字が、B1セルから右横に日付が、A2セルから下方には9:00-10:30などがA19までの範囲に入力されているとしてB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方の行番号の19までドラッグコピーします。 =IF(COUNTIF(INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)):INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)+9),$A$1)=0,"",INDEX(Sheet1!$B$4:$M$4,MATCH($A$1,INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)):INDEX(Sheet1!$A:$BS,MATCH(INDEX($A:$A,ROUNDUP(ROW(A1)/3,0)*3-1),Sheet1!$A:$A,0)+MOD(ROW(A1)-1,3),MATCH(B$1,Sheet1!$A$2:$BS$2,0)+9),0)))

  • エクセルマクロ ちょっと難しいです

    セクセル2010を使っています。 画像の様なデータがあります。 F1,G1、H1に入力された名前をA列から探し、その関連セルであるB列を上から順に表示させたいと思います。 現在、F2セルに =IFERROR(INDEX($B$1:$B$50,SMALL(IF($A$1:$A$50=F$1,ROW($A$1:$A$50)),ROW(A1))),"") の様な数式が入っていて、G、Hと下行に、オートフィルで数式をコピーしています。 それで、A列の途中から #VALUE のエラーが出てくる場合があるのですが、その場合は一切抜き出してくれません。 これを、抜き出す方法ってありますか? また、J列からR列、S列からZ列と同じ形式で作業が全部で8つあります。 詳しい方、教えて頂けませんでしょうか、よろしくお願い致します。

  • エクセル2010 検索と抽出

    エクセル2010を 使っています。 以前教えていただいた、数式を改変して応用したいのですが、うまくいきません。 やりたいのは画像の処理で、 B83の値を E列から探しその関連セルであるF列、G列の値を、C列D列に抜き出すという作業です。 改変した数式は以下の様なもので、C83に入力後、オートフィルで使おうと思っていました。 詳しい方、教えていただけませんか? =IFERROR(INDEX(F83:F162,SMALL(IF(E83:E162=B83,ROW(E83:E162)),ROW(A1))),"") (配列数式) 3キー打鍵 よろしくお願い致します。

  • Excel 関数について

    AND ASC AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS COLUMN COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS DATE DAY FIND HLOOKUP HOUR IF IFERROR INDEX INDIRECT JIS LARGE LEFT LEN LOWER MATCH MAX MEDIAN MID MIN MINUTE MOD MODE MONTH NOT OR PHONETIC PROPER RANK RIGHT ROUNDDOWN ROUNDUP ROW SECOND SMALL SUM SUMIF SUMIFS TEXT UPPER VLOOKUP WEEKDAY WORKDAY WORKDAY.INTL YEAR これくらい自由に使えますが、一般企業で使用するならこれくらい使えればいいですか。 また、これはよく使うという関数を教えてください(表記以外で)

  • INDEX関数SMALL関数を使って空白行を詰める

    シート1にINDEX関数SMALL関数を使って空白行を詰める表を作成したのですが詰めた表をシート2に表示することはできないのでしょうか。  =IF(COUNTIF($A4:$A4,0)=0,MAX(D$3:$D3)+1,"")  =IFERROR(INDEX(A:A,MATCH(ROW()-3,$D:$D, )),"")この表をシート2に表示する方法

専門家に質問してみよう