• 締切済み

エクセルのセル参照

エクセルで隣にくるセルを参照したいのですが、どうすればよろしいでしょうか。 F列に計算式を入れるのですが、C、D、E列を非表示にした場合、B列の値を取ってくる。というような感じです。 それが、D,E列を非表示にした場合はC列の値を取ってくるみたいな感じで、自動的に隣のセルとして認識してくれる関数みたいなのはありますか。

みんなの回答

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.11

追記、 どうも、ご質問に 仕様変更が、あるみたいですね。 でも、其れでも 先ずは、其の 非表示セル、非参照が 機能するか、お試し頂き、 結果を、補足頂ければ 幸いです。 宜しく お願い、致します。 後記、 列非表示では、なく 値非表示で、良ければ いとも容易い、所なのですが…

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.10

お待たせしました。 此方を https://1drv.ms/x/s!AjviygfJDgV_1ga8yXUAWrhV4l5P 「すぐ上の行を、参照」 此れは、 いとも簡単に、できるのですが ご要望の、此れは 手元では、出来ているか 確認が、取れませんでした。 ですので、お試し頂ければ と、思います。 (※注:ONLINEで使わず、ダウンロードしてくださいね) ところで、 仕様のメインを、なす 関数 SUBTOTAL ですが、 一応、 マイクロソフト公式見解と、しての 関数仕様上は、 此の様に https://support.office.com/ja-jp/article/subtotal-%E9%96%A2%E6%95%B0-7b027003-f060-4ade-9040-e478765b9939 出来る仕様記載、記載なのですが、 慣習なのか、バグなのか、隠れ仕様なのか、… 列の、非表示検知は 私の手元、 詰まり MACExcel2011では 機能しませんでした。 お手元の、Excelが どのタイプか、解らなかったので、 出来る、出来ないに、付いて 此方では、 何とも言えない所が、ありました、 故に、 此方での判断は、早計、 お手を、煩わすしか無い、 胸を、お借りしよう、 と、思いました。 因みに、此方は 関数使用法の、手ほどきです。 https://www.excelspeedup.com/subtotal/

  • SI299792
  • ベストアンサー率48% (708/1464)
回答No.9

上下左右が必要かどうかわからないのですが、せっかく作ったので載せます。 これは、検索対象を「値」を指定すると、非表示が対象外になることを利用しています。 ' Option Explicit ' Function HiddenNext(ByVal Com As String) As Variant '   Dim SearchArea As Range   Dim SearchDirection As Integer '   application.Volatile   Com = Left(Com, 1) '   If Com = "L" Or Com = "R" Then     Set SearchArea = Rows(application.Caller.Row)   ElseIf Com = "U" Or Com = "D" Then     Set SearchArea = Columns(application.Caller.Column)   Else     HiddenNext = CVErr(xlErrValue)   End If '   SearchDirection = xlNext - (Com = "L" Or Com = "U")   HiddenNext = SearchArea.Find("*", application.Caller, xlValues, , _     SearchDirection) End Function この関数の使い方は、 F1に=HiddenNext("Left") と入れれば、C,D,E が非表示なら、B1が表示されます。 左を表示したい場合は、Left 右を表示したい場合は、Right 上を表示したい場合は、Up 下を表示したい場合は、Down を指定します。 1文字目で判断しているので、L,R,U,D でも構いません。必ず大文字にしてください。 F1に=HiddenNext("Left") を指定して、A~Eを非表示にしたら、右端(XFD1)を表示します。 非表示にした後、再計算が必要です。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.8

そもそもエクセルの関数は、見た目(表示/示などや列幅など)を読み取ったり左右できないという大方針を判ってない質問が多い。 例外はCell関数。LOTUS123との互換のため入れられたか?と思う。 本件もエクセル通常の関数の領域外の問題ではないかと思う。 ーー 以下VBAでユーザー関数を考えた。 標準モジュールに下記を貼り付ける。 Function hihyoujic(x) Application.Volatile For c = x.Column - 1 To 1 Step -1 MsgBox c If Cells(1, c).EntireColumn.Hidden = False Then hihyoujic = Cells(1, c) Exit Function End If Next c End Function シートのセルに(F1などが適当か) =hihyoujic(F1) といれる。 Xには同行の式を 例データ A1:F1 1 7 3 4 5 としてC-E列を非表示にする。 関数を入れたセルF1に7とでる。 値を変えたり非表示のセルを変えたりしてやってみてください。 コードを変えれば列数(上記はセル(B1))の値を採っているが)なども取得できる。それを通常関数の引数としてでも使える。

  • msMike
  • ベストアンサー率20% (363/1772)
回答No.7

》 C、D、E列を非表示にした場合、B列の値を取ってくる。 残っているのはB列のみだからですね? 》 D列を非表示にした時はB-C、 C、E も隣り合っているように見えますが、此れは無視? 》 B列を非表示にしたらD-C D、E も隣り合っているけど、此れは無視?なぜ? では、 C列を非表示にしたら、どうするの?D-E?E-D? E列を非表示にしたら、どうするの?D-C?C-D? ソコントコの毅然とした規則をお願いします。

hediard
質問者

補足

すいません、補足が間違っていました。 》 D列を非表示にした時はB-C → E-C 》 B列を非表示にしたらD-C → E-D です。 やりたかったのは、F列で左隣に来るセルと、そのもう1つ左側にくるセルの差を出したい。それだけです。 失礼しました。

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

こんな感じで出来ないことは無いのですが、[F9]キーを押して再計算をさせないと反映できないという制限があります。 添付の図を見てください。 A1:E1までがデータで、F1に左隣の表示セルの値を表示するものとします。 A5:E5を作業行として使用します。 A5に↓の式を入れ、A5:E5にコピーします。 =(CELL("width",A5)>0)*COLUMN() F1には↓の式を入れます。 =OFFSET(F1,0,MAX(A5:E5)-COLUMN()) で、C:E列を非表示にした後[F9]キーを押すとB列の値を表示します。 CELL("width",A5)でセル幅が取得できるので、これが0の場合は非表示と判断しています。

  • SI299792
  • ベストアンサー率48% (708/1464)
回答No.5

Cellが非表示かどうかを直接知る方法はありません。 Cellの幅を知る方法ならります。縦方向に非表示にすれば、幅が0になるので、それを使えば可能です。 =IF(CELL("width",E1),E1,IF(CELL("width",D1),D1,IF(CELL("width",C1),C1,B1))) この方法は、左側オンリーです。また、3つまでで、Bまで非表示にした場合には対応していません。後ろにifを追加すれば、B非表示にも対応できますが、関数がやたら長くなります。 非表示ににしただけでは、再計算がされないので、値は変わりません。他のセルの値を変えるか再計算をする必要があります。 セルの高さを表す関数は見つかりませんでした。この方法では、上下の非表示に対しては不可能です。 いくつでも表示できる、上下左右にできる、万能な物が欲しいなら、マクロを使って、自分で関数を作るしかありません。作ったものはあるので、補足に書いていただければ載せます。

noname#232800
noname#232800
回答No.4

# 列を非表示にした時はB-C、B列を非表示にしたらD-Cのようにその時隣り合う それであれば いや、非表示にしたら計算しない・・・ってのはできません。 しかも、表示セルを都度変える関数・・・無いです。

noname#232800
noname#232800
回答No.3

Nouble さんに期待しましょう。 私は 計算結果で答えの出るセルを作って、F の他に G H と用意します。 ユーザー関数のほうが良いのでは? 自分で関数を書き、表示モジュールの中に書いて、B,C,D,Eって4つの式があるでしょ?条件によって答えが・・・・ VB なら参照するセルを与えて・・・

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

表示、非表示の、 如何に、伴って、 挙動を、変える 関数は、あります。 ですので、 出来るかも、知れません。 確かに、 失敗する、可能性も あるのですが、 もし、良ければ 閉めずに、おいて 頂けますか? 出来なかった時も、 其の旨だけは、申告しますね。

関連するQ&A

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

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

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

  • セルを参照させる関数について

    C列には関数で返ってきている値が入っています。(たとえば単純にC1のセルには=SUM(A1:B1)と入っている)そのままC1を横にドラッグしてコピーするとD1のセルには単純に=SUM(B1:C1)となりますが、見に行くセルをC2に、E1のセルの参照するセルはC3を。。。という風に参照させるにはどんな関数を使用すればいいのでしょうか? (単純にD1のセルに=C2と設定はしたくないのが前提です)

  • 隣のセルの値を参照させたい@excel(エクセル)

    エクセル初心者です。 C列に計算式が入ってるとします。ブランクの場合と数字の場合とがあります。隣のD列に、C列の値もしくはブランクをそのまま参照させたいのです。(C1が20ならD1も20に、C2がブランクならD2もブランクにしたいという意味です) また、D列の値を参照して、G列に計算式が入ってます。 (元々はD列には手入力で数字を入力するつもりで計算式を組みました。その後、C列とD列が全く同じものでよくなったので、タイトル通りの質問になりました。 ただ、値は同じものでよいのですが、C列とD列は意味合いが違いますので、D列を作らないわけにはいきません。) まずやってみたのは、例えばD1に「=C1」といれてみました。そうすると、D1は上手くいくのですが、D1を参照してる、少し離れたG1が「#VALUE!」となります。 条件付書式とかも試してるのですが、イマイチうまくいかず。 何かよい解決方法はないでしょうか?

  • INDIRECT関数で隣のセルの値を参照させるとエラー値#REF!が@excel(エクセル

    エクセル初心者です。 「月次」というシートのC列に計算式が入ってるとします(←DATE関数とMONTH関数、IF関数の組み合わせ)。C列の見た目は、C1が1、C31が31、のように、縦に1~31の数字が入っているように見えます。 例えば、B1に月の数字を入れると、C列の数字がその月に対応して見た目が変わります。例えばB1が7月だとC列は31日まで表示され、2月だと28日まで、のような感じです。でも、計算式は31日分入っているので、例えばC31は、月によって、見た目がブランクになる場合と数字になる場合とがあります。参考ページ:http://kokoro.kir.jp/know/calendar2.html ここで隣のD列に、見た目でC列に数字が表示されてるときは、別シートの数字を返したいとします。その参照させたいシートは31枚あり、例えば「1」というシートのD5の値を、「月次」のD1に返したい、という意味です。ただ、見た目でC31がブランクのときは、D31には何も返さず空白にしたいのです。 参照させたいシートが31枚あるため、オートフィル機能を使いたく、そこで、INDIRECT関数を使ってやろうとしてるのですが 参考ページ http://www.relief.jp/itnote/archives/001697.php 上記のとおりやろうとすると、「月次」のD列に#REF!がでます。 (エラーの出る計算式:INDIRECT(C1&"!D5")」 試しに「月次」のK列あたりに、1~31まで手入力して数字をいれ、そのセルを参照させるとうまくいくのですが、 (この場合の計算式:INDIRECT(K1&"!D5")」 ただ、30日の月や28日の月もあり、毎回K列を変えないといけないので、何とかC列を参照させたいのですが、何かよい解決方法はないでしょうか?

  • 参照した数値を関数に代入し計算する方法

    手動で数字を入力するセル(C1)に入れた数字と同じ数字を 規則的に数字が書いてある(例;1~100)A列から探し A行の隣に書いてあるB行の数字(A1だったらB1)を 参照し関数の入っているセル(E1)にBの値を入れてExcelで 計算するような方法(マクロになるようなら貼り付ければできる形)を 教えて下さい(B1の値が直接使えないならD1というA行の隣から探した Bの数字を表示するセルを作る形でも可) 例えばC1に10といれA行から10と書かれているA6のセルを検索し その隣のB6のセルから20という数値を参照し、E1に書いてある 例えば=IF(X(B6)<45,Y(例;F1)*1.5,IF(45<X(B6),Y(例;F1)*2)) のような関数のXに代入する感じです(Y(F1)の数字は適当なセルの値) 上手く説明できていないかもしれませんが宜しくお願いいたします

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセル(絶対参照と関数を使ったやり方?)

    列Gの値をセルF7の値と比較し、その結果列Gの値がF7の値より大きい場合は○(マル)を、そうでない場合は×(バツ)を表示させる。 (絶対参照と関数を使う) これはどうやったらできるのでしょうか。 色々試したのですがどうしても分からなくて・・・ お願いします。

  • エクセルにて結合セルの範囲を参照するには?

       A B C D E F 1 |フォード| 2 |BMW | 3 |ホンダ | 各行A列~C列3つを結合入力 4 |ルノー | 5 |DFR  | 6 |ベンツ |  上記のようなエンジンメーカー表にて、A1~C1,A6~C6間にF1へエンジンを供給しているメーカー名がA~Cの3つのセルを結合して入力されているとします。  このような表を用いて別のワークシートから、このエンジンメーカーの入力セルの文字列を参照したいのですが、  フォードの場合ですと、=’エンジンメーカー表’!A1:C1と表示され、エラー値VAULEが返され、参照したい文字列が返りません。  結合されている3セルに範囲名をつけてINDIRECT関数で参照すれば出来るのですが、結合セルの項目が多過ぎて、いちいち、名前をつけていられないのです。  また、表のセル結合を崩せないのです。(同じフォーマットで作られている表が多数存在のため) このような単一セルでなく、複数のセル範囲を結合して入力されている文字列を簡単に=で参照する方法は無いでしょうか?

  • Excel 関数 列内の文字を参照し隣列の値を返す

    Excel2003です。 関数を使ってみたのですが、思うようにいきません。 C列を参照し、「みかん」という言葉があれば、そのセルの隣の列の値(D列の「B」)を、A1に表示したいです。 最初は、VLOOKUP関数を使えばいいと思っていましたが、「検索値」というものがはっきりしない為、使用できない?のでしょうか? 「みかん」という単語を探し出すには「COUNTIF」でしょうが、その関数では、直接その値を返すのみなので、何かの関数と組み合わせるのか、それとももっと良い関数があるのでしょうか? なお、C列に「みかん」という単語は一度しか登場しない為、列内に複数「みかん」が存在している場合にの対処法は、不要です。単純に、「みかん」の値の2列目だけをA1セルに表示させたいのです。

専門家に質問してみよう