Excelの関数で変数みたいなものって使えますか?

このQ&Aのポイント
  • エクセルでの変数の使用方法について教えてください。
  • エクセルのシート名や入力データに変数を使用する方法を教えてください。
  • エクセルでのデータ管理や自動反映に関する関数の使用方法について教えてください。
回答を見る
  • ベストアンサー

excelの関数で変数みたいなものって使えますか?

こんばんは。 今エクセルであることを試みていますが、 知識が足らず皆さまの力を借りたいと思ってのご相談です。 今エクセルの内容は入力フォームシート、 1月、2月、3月、4月…のシート 最後に1月~12月までの集計をするシート という風に用意してあります。 やりたいことは入力フォームシートで 他シートからのデータの参照をしながら、追記させたいということです。 現在、1月~のシートでは商品の管理をしています。 A~D列までがID、番号、商品名、カナでデータの格納を各々でしており、 E~Fまでは空欄になっています。 空欄には入力シートで入力の都度、その納品があったかどうかを示す文字列を E列から順に書き込むという風に考えています。 (入力シートで先に入力した値があり、E列に既に値が入っていたら、 次のF列に書きこみ、更にあればG…という風に反映させたいです) 入力フォームでID(A列になります)を入れると、 それに該当する商品名などのデータ(B~D列までの値)を 1月などのシートから自動で引っ張って来るようにし、 E列に用意したプルダウンで引っ張って来るシート名(1月などの)を確定。 (できれば…なんですが、ID入れた時点でD列までのカナは習得できたら尚いいです…) そして更に入力フォームの最後の列、F列に新しく入れた値を プルダウンで選んだシートのE列に入れる(上記に説明した感じにです) という風に反映できないかと思っています。 ※集計シートは1月~のシートの総計なので、今のところなんとか出来てます。 なので、シート名などは変数になるのでは…と思っています。 こういう場合、どういう記述をしたら良いのでしょうか? また、こういうことを実現するのは可能でしょうか? マクロ(触ったことないです)を使わないと実現できないことでしょうか? 今扱いきれないので、なんとか普通の関数などで実現したいと思っています。 皆さまの知恵を借りたいです。回答よろしくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No2の方と同じ意見ですが、シート構成を根本から見直す時期になった と考えてください。 パソコンの操作やエクセルの機能で考えてみてください。 マウスの中央のホイールを操作するとデータは上下に移動します(左右には移動しません) オートフィルターやピボットテーブルも縦方向のデータにしか使えません。 1、データは一枚のシートに日付の項目と一緒に入れていきます。 2、データはひたすら縦方向へ入れていくようにします。 3、データは年がかわってもファイルを増やすことなく、ひたすら一つにまとめます。 これらがルールだと思って下さい。 そうすると集計・グラフ作成・分析が簡単にできるのです。 >今エクセルの内容は入力フォームシート、 >1月、2月、3月、4月…のシート 入力フォームのシートにひたすら縦方向にデータを入れていきます。  日付 ID だけでも大丈夫かと >(入力シートで先に入力した値があり、E列に既に値が入っていたら、 >次のF列に書きこみ、更にあればG…という風に反映させたいです) この横方向に広がるデータの増え方はやめます。 >やりたいことは入力フォームシートで >他シートからのデータの参照をしながら、追記させたいということです。 マクロの機能を使わないと実現できない項目です。 察するにですが ひとつのIDである商品の発注があり、それが複数回に分けられて納品されるケース として考えました。 商品名の一覧がはいったシートを準備  A  B   C 番号 商品名 カナ ・・・・ 新規発注入力フォームのシートにマクロボタンをひとつ配置  各セルに IDと番号、発注数量を入れます。 (必要であれば 作業者名とか 新規 とか項目を増やしてもよいでしょう)  別のセルに 商品名とカナが表示されるように Vlookup関数を配置します。 ボタンを押すと データのシート  A 日付 ID 番号 数量 の一番下にデータが追加される様にします。 更に 納入入力フォームを準備し、同様に ボタン配置  あるセルに IDと納入数量(仮に 納入の場合は 数量を -で入力) をいれます  別のセルに 番号と商品名とカナが表示されるように Vlookup関数を配置します 発注入力のボタンを同じで、ボタンを押すと データのシート  A 日付 ID 番号 数量 の一番下にデータが追加される様にします。 これで、いつ、何が、いくつ、どうしたか が判別できます。 あとは ピボットテーブルやフィルターオプションの機能をつかって ID別に集計したり 日付の範囲を設定して集計したり、月別に集計して表示するシートを考えてみます。 実はこの様にデータがひとつのシートに縦方向に並んでいると 簡単に希望のデータや抽出や集計・グラフ化などが可能になります。 また、年をまたいでも使えますので 年単位の集計も可能になるということです。

sscommon
質問者

お礼

お返事が遅くなりました。 まとめてのお礼になりますが、No.1~3までの皆さま回答ありがとうございました。 とても参考になりました。こちらで得た回答をもとにがんばってみます。

その他の回答 (2)

回答No.2

入力用のシートも作らず、かつ、月別に分けずに 直接入力してしまうのが最も時間がかからなそう。 VBAを使わないならMS-ACCESSを使うといったところかなぁ マクロは当方の技量では、作成にとても時間がかかりそう。 とても、回答できるレベルでもないし。。。 普通の関数では、実現不可。 変わった関数でHYPERLINKがあるが、直接入力にする仕様に変わりないので、 結局、関数では実現不可。IDを入れたら、その入力されている行までジャンプさせることができる。 また、ジャンプ→編集後、[Alt]+[←]で戻ることも可能。 シートを分けずに入力すれば、オートフィルタでの抽出やピボットテーブルでの集計。 検索/行列関数での月別分けなど、比較的単純な関数や機能で対応できる。 シートを一つにまとめるときは、シート名の列(1月、2月・・・)を加えること。 あとは、どこまで仕様の変更を許せるかってとこですね

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

この質問は、文章ばかりで、聞いていることを読者は理解しにくいと思う。 いっそのこと思い切って、3シートにして、シートとそのセルデータのデータ例をあげて 、人手でやることにして、人間の思考過程(特にセルの選択判断など)を図(データ)と文章と で表現すべきだ。 関数は式を入れたセルで、他セルデータをうけて演算などして、式を入れるセルに結果をセットする が、受身的で、そのため式が難しくなる場合がある。 セットするデータが浮動的な場合など、トリッキーな式を考える必要がある場合がある。 多分>excelの関数で変数みたいなものって、データの在る最終行の次の行にデータを 人間のセル選択判断や入力無しに入れたいのかな? == 一般論として、エクセル関数では、変数を使えない。だから苦労する。 VBAを勉強すれば、その点は自由になるので、次の処理にデータを渡したり セル番地を指定して、データをセットできる(セルに投げ込むイメージ)。 ーー ただし配列数式というのがあって、ここでやっているのは、変数的な一時記憶領域の使用を 推測させる仕組みである。 ーー >excelの関数で変数みたいなものって使えますか? なんて一般的な発想をして、質問するのは、速すぎると思う。標題が一般化しすぎて適当でない。 エクセルを相当使って、考えた末に考えるべき課題だし、VBAをやれば、その違いが判るように なると思う。 それより、今回実現したい問題に絞って、データの図示の力を借りて、読者への説明に 力を注ぐこと。

関連するQ&A

  • エクセルの関数

    こんばんは 『=IF(シート2!E20="","",シート2!E20)』という関数を使うと、「シート2」(シート名)以外のシートにおいて、シート2のE20の値が入力されるものだと思いますが(そのようにして使っています)、E20が0の場合にはF20の値を、また、F20が0の場合にはE20の値を入力させるには、どのような関数にすればいいのでしょうか。 ご教授下さい。

  • INDIRECT関数が上手く使えません。

    集計シートF334セルに、「=SUMIF(貼付!E$2:E$300,A334,貼付!K$2:K$300)」と 入力して、貼付シートのE2:E300の範囲から、集計シートA334の値を探して、 貼付シートのK2:K300の値を合計して、集計シートF334セルに表示させています。 集計シートF338セルに「K」と入れて、集計シートI338セルに「=F338&2&":"&F338&300」と 入力して、集計シートI338に「K2:K300」と表示させています。 貼付シートで必要な列が、K列からJ列・H列など月ごとに変わるため、 INDIRECT関数を使用して、集計シートF338セルに入力した値から集計シートF334セルの 値を更新しようと思っています。 そこで、集計シートF334セルの値を次のように変更しましたが、求めている結果が得られません。 0と表示されます。どこが誤っているのか、教えていただけないでしょうか。 「=SUMIF(貼付!E$2:E$300,集計!A334,INDIRECT("集計!"&I$338))」

  • エクセルの関数について教えてください

    エクセルについて教えてください。 下の表は商品毎の支店別販売数量のリストです。  ┃  A  ┃  B  ┃  C  ┃  D  ┃  E  ┃  ╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋ 1┃(空欄) ┃ 商品名 ┃ 支店A ┃ 支店B ┃ 支店C ┃  ╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋ 2┃(空欄) ┃ 商品1 ┃  1  ┃  2  ┃  3  ┃  ╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋ 3┃(空欄) ┃ 商品2 ┃  9  ┃  4  ┃  3  ┃  ╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋ 4┃(空欄) ┃ 商品3 ┃  4  ┃  8  ┃  6  ┃  ╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━╋  1行目はタイトル、2行目以下がデータ部分です。実現したいのは商品毎の最も販売数の大きい支店の支店名を商品名の左(A列)に表示させたいのです。  すなわちセルA2には「支店C」を、A3には「支店A」を表示させたいのですが、どんな関数を使えばいいでしょうか。  実際のデータは商品数(行数)が500位、支店(列)は20位あります。 よろしくお願いします。

  • エクセル関数 VLOOKUPで

    エクセル2007です A列に商品名 B列に価格 C列に税込価格(B1*1.05) の表があります。    A   B  C  |いちご|900|945|  |みかん|300|315|   D1にA列の商品名を選択して入力できるように 入力規則でドロップダウンリストがら選択にしました。 (範囲はA列です) E1には商品名を選択すると税込金額が反映されるようにしたいので、 =IF(D1="","",VLOOKUP(D1,A:C,3,1)) と入力しました。        D   E           D   E 正 |いちご|945|  →  誤 |いちご|315|   D1の商品名と同行の3列目の値を返す…とやりたかったのですが、 別の行の値を返します。(C列の値であることは確かなのですが…) なぜでしょうか? また、テーブルを昇順で表示とあるのですが、優先はどの列でしょうか? A列優先でもD列優先でも値が違います。

  • エクセルの関数を教えてください。

    セルHにIFとANDを使って下記内容の関数式を入力したいです。 セルAからセルF内すべてに数値が入っていたらセルFを返す、 セルFが空欄ならばセルEの数値を返す、 セルEも空欄ならばDの値を、 Dも空欄ならばCの値を、Cも空欄ならばBの数値を、 Bも空欄ならばAの数値を返し、 Aも空欄(つまりAからF内に数値なし)ならばスペースを返す。 わかる方、教えてください。 よろしくお願いします。

  • Excelの関数について教えてください。

    前にも同じような質問をしたのですが、よく理解できなかったので、もう一度質問させていただきます。 まず、A列に1~10まで入力します。次にB列に11~20まで入力します。同様にC列に21~30まで入力します。そして、セルE3に2、セルE5に12に入力します。 それから、セルE3の値をA列から検索し、セルE5の値をB列から検索し、その重なったB行のC列の値を求めたいのです。ここでは22になります。 自分なりに考えてみましたが、 =IF(MATCH(F3,A:A)=MATCH(F5,B:B),INDEX(A2:C10,MATCH(F3,A:A)=MATCH(F5,B:B),C:C,"")) ではエラーがでてしまいます。 いくら考えてもわかりません。 どなたか教えてください。よろしくお願いします。

  • 関数について

    例えば下記のような表があるとします。 sheet1の表から、sheet2の表に現金のみを抽出したいです。 このときに、収入や、支出と記入されているところは、金額を逆にして表示したいです。 できれば、できるだけ短い式でマクロや配列数式?は使いたくないです。 丸投げとなってしまいますがよろしくお願いします。 元データイメージ sheet1 C3 1月1日 D3 収入 E3 100 F3 空欄 G3 現金 C4 1月1日 D4 支出 E4  空欄  F4 101 G4 商品券 C5 1月2日 D5 購入 E5 空欄 F5 102 G5 商品券 C6 1月3日 D6 その他 E6 103 F6 空欄 G6 現金 C7 1月4日 D7 支出 E7 F7 104 G7 現金 抽出データイメージ sheet2 C3 1月1日 D3 収入 E3 空欄 F3 100 G3 現金 C6 1月3日 D6 その他 E6 103 F6 空欄 G6 現金 C7 1月4日 D7 支出 E7 104 F7 空欄 G7 現金

  • エクセルで空欄を探して入力する関数は?

    エクセルでシート2のどのセルに入力してもその入力した値がシート1上でA1からA2・・・と順にもし、A1が空欄でなければ空欄の次のセルに入力する、という風な関数、方法を教えてください。

  • エクセルの関数で

    Sheet1のA列に格納された値と一致する値を、Sheet2のA列に格納された値から検索し、もし一致する値が存在すればSheet1のE列に○を付けていくということを実現したいのですが、VLOOKUPを使ってもなかなかうまくいきません。 ちなみに、Sheet1とSheet2のA列には確かに一致する値(文字列)は存在するのですが、数量と並びはバラバラです。VLOOKUPの場合、DBでいう主キーみたいなものと値は一致している必要がありますか。例えば順番はバラバラでも、「1」という数値と「りんご」という文字列は両シートで共通して一致していないといけないみたいな…。 エクセルの達人の方がいらっしゃいましたらどうか宜しくお願い致します。

  • Excelの関数で教えてください

    添付画像のような表があり、E列の「金額」欄は基本的にはB列×D列の乗算の結果を表示させるので、それだけなら例えば2行目なら「B2*D2」で良いのですが、D列が空欄だったり、B列・D列とも空欄になる場合があって、E列のみに数値を記入するケースがあるため、E列に数式を設定するとイレギュラーで数値を入力できないため、その場合、隣のF列に代わりに入力すると、E列に表示が出るようにしたいと考えています。 C列は単位が入ります(○本、○ケース、○式等) まとめますと、 E列に表示される数値は B列とD列それぞれに数値がある場合はB列×D列の結果を表示 B列に数値があり、D列に数値がない場合はF列に入力した数値を表示 B列にもD列にも数値はなく、F列に数値がある場合はF列に入力した数値を表示 B列、D列、F列のいずれにも数値がない場合はブランク というような数式をE列に設定する場合、どういうような数式にすればいいのか、ご教示いただけないでしょうか? 以上、よろしくお願いいたします。 ちなみにExcel2010または2003で使用します。

専門家に質問してみよう