エクセルで指定数まで増えると隣のセルを参照したい

このQ&Aのポイント
  • エクセルで特定の数まで増えたら隣のセルを参照する方法について質問です。
  • 特定の条件でセルの参照を変える方法を教えてください。
  • 循環関数にならない方法で、エクセルで指定数まで増えると隣のセルを参照する方法を教えてください。
回答を見る
  • ベストアンサー

エクセルで指定数まで増えると隣のセルを参照したい

いつもお世話になっております。 かなりエクセル関数には慣れているつもりですが、どうしても解決しなかったので質問させていただきます。 下の表を用意して、  /  A  / B(表1) 1 / たかし / 3 2 / ひろし / 4 3 / はなこ / 5 下の様に、 たかし1 たかし2 たかし3 ひろし1 ひろし2 ・ ・ ・ と一定数まで増えると下のセルを参照して、「ひろし4」まで行ったら次は「はなこ1」から始まる、そんな動きをしたいのですが、どうすれば良いでしょうか。 いくつか別のセルを用意しても問題無いです。 自分なりに、=A1&B1にして「たかし3」と一致したら「ひろし」に変えようとしてみたり、 「たかし」「たかし」と繰り返して、別のセルで数をカウントして「3」に達したら「たかし」を「ひろし」に変えようとしてみたり、 試行錯誤してみましたが、どうしても循環関数になってしまいます。 どうすれば良いのでしょうか。 ちなみに、IF関数の参照を変数で変えるというのはできますでしょうか?  / C / D(表2) 1 / 10 / 15 セル番地A20に、「=IF(A19=10,1,A19+1)」としておいて「10」をC1から引っ張る変数にして、 10に達したらD1の15を参照する。とすれば最初の質問が解決できると踏んでいるのですが、できませんでした。 もっと簡単な関数などがあれば教えてほしいです。よろしくおねがいします。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

作業列を使っていいんですよね? 添付の図では、C、D列を作業列として使用します。 C1には0、C2には=C1+B1 と入れてC2セルを下方向にコピー D1に=MATCH(ROW()-1,C:C) と入れて下方向にコピー F1に↓を入れて下方向にコピー =IF(ROW()>MAX(C:C),"",INDEX(A:A,D1,1)&(ROW()-INDEX(C:C,D1,1))) こんな感じで如何でしょうか。

tonimii
質問者

お礼

回答ありがとうございます。実際に数を増やしてみたり、「はなこ」の下に「たろう/ 3」と追加したりしたところ、望む動きをしてくれました! とても嬉しいです! ただ、どうしてこのような動きをしているのか、まだ理解できません。 分解してみたり、色々と頂いた関数をいじってみます! 本当に助かりました。 ちなみにですが、なぜこの関数が必要になったかと言いますと 求人広告の契約枠数と実際の掲載数を比べて見たかったからです。 「たかし」が3枠契約していて、 別の表から「たかし」が2件掲載中であることを「たかし1」「たかし2」と表示して分かるようにしているので、 契約枠  掲載数 たかし1 たかし1 たかし2 たかし2 たかし3 (空欄) と、このように比較して「あと1件空きがありますよ」と見えるようにしたかったのです。 本当にありがとうございました。

その他の回答 (3)

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.4

>10に達したらD1の15を参照する。とすれば最初の質問が解決できると踏んでいるのですが、できませんでした。 if文を駆使すれば、お望みの事は大体できます 現在記入されている、3,4,5という数字に対応させたものを作成することは可能です 例えば c4に =IF(LEFT(C3,3)=LEFT(C2,3),IF(B$1>RIGHT(C3,1)*1,A1&RIGHT(C3,1)+1,A2&1),IF(B$2>RIGHT(C3,1)*1,A2&RIGHT(C3,1)+1,A3&1)) しかし、数字を1,1,1とかに変更してしまうと $つきの参照セルを手で修正しないと対応できません。 どうしても関数でやる場合は 数字のセルにそれぞれの名前を付け、 一つ上のセルと同じ名前が使えるのなら、一つ上のセルから得た名前を使って indirectを使い 違う名前にする必要がある場合は offsetの基準に名前を付けたセルが使えれば、何とかできるでしょう。

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

マクロで書くと、以下のようになるのですが、これだけのことが、関数だけでできるのでしょうか? 一瞬、「=rept()」が使えないか、とも思ったのですが・・・ Option Explicit Sub Test() Dim n() As String Dim c(), i, j, l, r As Integer r = Range("A1").End(xlDown).Row For i = 1 To r ReDim Preserve n(i - 1) ReDim Preserve c(i - 1) n(i - 1) = Cells(i, 1).Value c(i - 1) = Cells(i, 2).Value Next i l = 0 For i = 1 To r For j = 1 To c(i - 1) l = l + 1 Cells(l, 4).Value = n(i - 1) Next j Next i End Sub

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

たかし/1 ひろし/1 はなこ/1 たかし/2 ひろし/2 はなこ/2 ・ ・ ・ という表を作ってから、=A1&B1にしてはいかがでしょう。

tonimii
質問者

お礼

早速の回答ありがとうございます。 せっかくお答えいただいたのですが、そうではなくて 表を元に自動で表示させたいのです。 例えば今日は表のたかし/3が、来月はたかし/5となった場合に「たかし4」と「たかし5」が自動で表示(再計算)して表示したいのです。 いっそ手作業でやるしか無いのでしょうか・・・。

関連するQ&A

  • 【エクセル関数】参照するセルを一定数ずつ増やす

    関数で苦戦しています。 下記のようなIF関数を使用しています。 =IF(A1="","",A1) 参照するセルのA1の部分がA3,A5,A7…となるように 行数を一定数ずつ増やしたいのですが、やり方がわかりません。 どなたか教えてください。 説明が下手でごめんなさい。

  • Excelにて、参照先のセル列を求めるには?

    教えて頂きたいのですが、 Excelにてシート1に、1の段から9の段までの九九表があります。 その九九表よりシート2のA1に『=』で、 ランダムに答えを持ってくるとします。 そしてさらに、シート3のA1に、シート2のA1を参照して シート1の列が出せるようにするには どうすれば良いのでしょうか? 例を出すと、 シート1のD6=24 (D=4列目 、 6=6行目)を、 シート2のA1に参照させました。 シート2のA1には24(式は『=D6』)が入っています。 シート3のA1にシート2のA1を参照させて、 『4』(4列目)と表示させるには どういう関数式を入れれば出来ますか? もちろんシート2のA1は その都度ランダムで、入れるセル番号が変わります。 また、九九表というのはあくまで例です。 実際には専門用語の入った一覧表になっていますので、 九九のような、前後に関連性がある表ではありません。 ただ、参照しているセルの前のセルまで さかのぼってセル情報を取得出来る方法を知りたいのです。 こういうことって可能でしょうか? 分かる方教えて下さい。宜しくお願い致します。

  • エクセル セル参照の変数

    エクセルの使い方で質問です。例えばA8というセルを参照する時は fx=A8 として関数の欄に記入する事で参照すると思うのですが、このA8の「8」という箇所を変数にして別のセルに記入した数字を入れる事は出来るのでしょうか。例えば別のセルに64という数字を入れるとこのA8がA64としたいと考えています。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • Excelの参照について。

    こちらでは初めて質問させてもらいます。マクロ初心者です。長くなりますが携帯からなので画像貼れずにすいません。 vistaで2007使用です。 Sheet1に備品一覧表(結合セルなしで1行に備品ひとつ分が15列で400行くらい)があり、Sheet2に個表(空欄で枠のみの表で横に3品、縦に3品の9品分を1ページに印刷できるよう設定)を作成したいです。 Sheet2はSheet1の1行の中から一部を抽出して作製したい様式の違う表です。 例えばSheet1のA1がSheet2のA1からC1を結合したセルに、Sheet1のD1がSheet2のB2に、Sheet1のN1がSheet2のC3に…など 1つ目の参照が終わったら2つ目はSheet1のA2がSheet2のD1からF1を結合したセルに、Sheet1のD2がSheet2のE2に、Sheet1のN2がSheet2のF3に…という具合で もう1つ分右にいってから 4つ目は1つ目の下に移動しSheet1のA4がSheet2のA13からC13を結合したセルに、Sheet1のD4がSheet2のB14に、Sheet1のN4がSheet2のC15に…という具合で400行分参照するようにしたいのです。 Sheet2の各セルに一つ一つ参照を設定していくのも大変なので、Sheet1の必要なセルを参照してSheet2の各セル(結合セルあり)に表示させるマクロをつくりました。 今後Sheet1で変更したいのでコピー貼り付けでは都合がよくありません。いろいろ参考にさせてもらってヘルプで意味を調べながら作ったのですが、下記のコードでSheet1に文字が入っているセルの参照はできましたが、Sheet1に関数を入れているセルの参照の部分がうまくいきません。(関数が表示されます) Sheets(2).Select Cells(x, y).Select ActiveCell.FormulaR1C1 = "=Sheet1!R[" & CStr(i) & "]C[" & CStr(j) & "]" Sheet1で使った関数はこれです。 =IF(M10=1111111,"不明","H"&RIGHT(M10,6)) Sheet1のM列には購入日を数値化した七桁の数字(例えば4210310はH21.3.10のこと)が入っていて、N列に関数でH210310(ホントはH21.3.10としたいができませんでした。)と表示させそれをSheet2で参照させようと考えました。 文章表現がわかりにくいところがあると思いますし、マクロ初心者のため簡単なところが間違っているのかもしれませんが自分で解決できないのです。どなたかお助け下さい。

  • エクセルでセルの参照

    例えば、 B1のセルにA1を参照したいので =A1 B2のセルにA3を参照したいので =A3 B3のセルにA5を参照したいので =A5  というふうに、二つ飛びのセルを参照にしていきたいのですが、 上のように、3つ程を直接入力して、囲ってマウスで下に伸ばしても うまくいかないようです。 簡単にうまくいく方法はないでしょうか?

  • エクセルの関数、セルの参照について

    いつもお世話になっております。 添付ファイルのような表を作成しました。 やりたい事は、 (1)累計の欄に数字を直接記載する。 (2)単日の欄に当日と前日の数字の差を記載する(E10はD10-D5) という簡単な表なのですが、土曜日と日曜日は数字の変動がないため、見た目を考えて空欄にしたいと思ってます。 そうすると、4日のE20はD20-D5になるので、数式のコピーではうまく行きません。 今の私の知識だと、IF関数でダラダラと数式を作って行くしか思いつきません。 そこで、土日は金曜日の数字を記載して、条件付き書式で土日は白文字にして見た目だけ空欄にしようかなと考えました。  =weekday(B3)=1のときは白文字    =weekday(B3)=7のときは白文字 セル範囲はD5:E7  としたのですが、これだとD6とD7も白文字になってしまいます。 B3を絶対参照にすると、解決しますが、コピーした場合、また、セルの参照をするしかありません。 スミマセン分かりずらい文章をダラダラと書きましたが、要は、 (1)土曜日、日曜日は計算の対象から外したい場合は、どのような数式が最適でしょうか? (2)セルの参照方法として、B3が●●だったら、D5~D7を○○したい場合、B3セルを絶対参照すればいいわけですが、コピーした場合は、個別に参照しなおすしかないのでしょうか? どなたかご教示をお願いします。

  • EXCELで、セル一つにつき使える関数の数

    エクセルで一つのセルにIF関数を9個以上使おうとすると、エラーになります。8個なら大丈夫です。ヘルプを参照しても、「一つのセルに7個までしか関数を使うことができない。」と書いてあります。それでも、9個以上IF関数を使いたいのですが、何か良い方法はありますか。

  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。

  • エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思ってい

    エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思っています。 複数セルの中にはエラー値#N/Aも含まれています。 参照元のセルにVLOOKUP関数を埋め込むのも数が多く大変ですし、 合計値セルでISERROR関数を埋め込んだら「数式が長すぎます」というエラーが出ます。 #N/A以外を抽出し、合計値を出す方法はありますでしょうか。 出来ればVBAを使用せず回避できる方法を教えて頂ければ幸いです。

専門家に質問してみよう