• ベストアンサー

縦書きの表を以下のようにするには?

  A   B  C   D   E  F  G 1期日 場所 番号 数量 合計 23/1   A  7   20  60 33/2   A  8   30  80 43/3   B  9   45  75 53/4   D  5   15  90  のような形の表を  期日 3/1 3/2 3/3 3/4  場所  A  A  B  D  番号 7  8  9  5  数量 20 30 45 15  合計 60 80 75 90 と書き換えたり、別シート表示させたりする場合には『型式を選択→行列を入替貼付』またはTRANSUPOSE関数を使用するのは知っています。検索行列関数で表示するにはどうすればいいでしょうか?  関数式で元シートに表示させる場合は、INDIRECT,ADRESS,OFFSET,INDEX,INT,MOD,ROW,COLUMN関数を使い、数値を+-したりします。  個々の1つ1つの関数は『こう使う』というのは何となく分かるのですが、これらが幾重にも複合ネストされると『何でこのセルがこの位置に移って表示されるのか理屈が分かりません。  以前、似たような質問で回答いただき、目的は果たせましたが、未だに何故そうなるのか理解できておりません。  縦→横に入替え、またはその逆の表示をさせたい場合、これらの関数は必ず出てきます。  上記の元の表にE列に合計を表示してますが、F列以降にデーターが増加すると  下の配列表示にするにはINT,MOD,ROW,COLUMN関数のどこの数値を増減するのか相互関係が分かりません。  参考書を買い、独学で学習していますが、難しいです。皆さんはどのようにして覚えられたのか、お聞きしたいです。  やはりPCスクールに行かないと無理なんでしょうか?この辺の関数を理解できそうなサイトをご存知だったら教えていただけないでしょうか?  私はINDIRECT,ADRESS,OFFSET,INDEX,INT,MOD,ROW,COLUMN関数等を凄く苦手にしています。  

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

  • ベストアンサー
noname#204879
noname#204879
回答No.5

[No.4回答に対する補足]に対するコメント、 先ず、「レベルが低く」なんてことは全くないですよ。ご安心ください。 ご質問の内容は至極簡単でも、正解を出すのはとても難しいことでした。既に imogasiさんから回答が出ていたので、私は別解を出さざるを得ませんでした。式の構成が非常に似ていることにお気づきでしょうか?先に出されたのが INDEX関数だったので、私は OFFSET関数を使ってみました。 imogasiさんの場合は、必ず別シートのセル A1 から式を入力する必要があります。私の場合は、同じシート上でも構わないようにしました。その分、難解になっていると思います。 だから COLUMN()、ROW() でなく、余り見かけない COLUMN(A:A)、ROW(1:1) を使いました。「PCスクール」では教えないでしょうね。更に COLUMN(A:A)-1、ROW(1:1)-1 などとなっているので奇異に見えるかも。ちなみに、COLUMN(A:A)、ROW(1:1) はそれぞれ COLUMN(A1)、ROW(A1) とした方が分かり易かったかも。さて… 》 REF!エラーが出てしまいました。何故なのでしょう? imogasiさんの式で問題なかったのなら、私の式で なぜエラーになったのかは私にも分かりません。#REF!エラーは参照不可能を意味しています。COLUMN(A:A)-1、ROW(1:1)-1 はそのとおりに入力しましたか?見直してみてください。分からなかったらジャンジャン再質問してください。貴方のレベルアップに協力します。

その他の回答 (4)

noname#204879
noname#204879
回答No.4

[No.3回答]のステップ3の「4列」を「5列」に訂正。

1960ken
質問者

補足

回答いただいた式をセルに入力しましたが、REF!エラーが出てしまいました。何故なのでしょう?  レベルが低く、すみません。

noname#204879
noname#204879
回答No.3

1.任意のシートの任意のセルに次式を入力   =OFFSET(Sheet1!$A$1,COLUMN(A:A)-1,ROW(1:1)-1) 2.このセルを右4列に複写 3.上の行の4列のセル範囲を下方に4行複写 4.最上行をユーザー定義の m/d で書式設定

1960ken
質問者

お礼

mike_gさん、回答有難うございます。 やはりこれですね。パッとみても頭に中々、描けません。参考書にもあまり、このような例が載っておらず、苦戦します。  気長に続けてみます。有難うございました。

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

例データ Sheet1A1:E5 期日 場所 番号 数量 合計 2006/3/1 A 7 20 60 2006/3/2 A 8 30 80 2006/3/3 B 9 45 75 2006/3/4 D 5 15 90 (書式の設定) B1:E1を日付 B2:E2を文字列 B3:E5を数値に設定する。 (数式) Sheet2のA1に =INDEX(Sheet1!$A$1:$E$5,COLUMN(),ROW()) A1の式をE1まで複写する。 A1:E1を範囲指定し、E1で+ハンドルを出し、A5:E5 まで引っ張る。 結果 Sheet2のA1:E5 期日 2006/3/1 2006/3/2 2006/3/3 2006/3/4 場所 A A B D 番号 7 8 9 5 数量 20 30 45 15 合計 60 80 75 90

1960ken
質問者

お礼

imogasiさん、いつもながら回答有難うございます。 完成式を一つ一つバラして検証しています。理解できるまでやりたいと思います。  有難うございました。

noname#204879
noname#204879
回答No.1

》 やはりPCスクールに行かないと無理なんでしょうか? 単なる回答でなく、解答はノーです。私は講習とかマニュアル本とかに頼ったことはありません。 講習とかマニュアル本とかが無駄と言っているのではありません。 要は、貴方が仰っているように「何故そうなるのか理解」する努力が必要で、どうしても分からなければ質問すれば好い。が私の持論です。

関連するQ&A

  • この式はなぜエラー #VALUE! になるのだろう?

    この式はなぜエラー #VALUE! になるのだろう?   A  B  C  D 1    92 95 96 2 3  60 67 99 4  99 13 74 5  92 58 96 6  93 59 10 7  81 51 10 8  81 95 98 9  88 45  6 範囲 A3:C9 に上図のデータがあると仮定します。そして、 1行目の各セルに次の値を返したい、というのが問題です。 B1: セル A3、A5、A7 の最大値 C1: セル B4、B6、B8 の最大値 D1: セル C5、C7、C9 の最大値 1行目の各セルに次の配列数式を入力すれば希望通りの値が得られます。 B1: {=MAX(OFFSET($A3,0,0,5,)*MOD(ROW(A1:A5),2))} C1: {=MAX(OFFSET($A3,1,1,5,)*MOD(ROW(B1:B5),2))} D1: {=MAX(OFFSET($A3,2,2,5,)*MOD(ROW(C1:C5),2))} OFFSET関数の引数 0、1、あるいは 2 のところは COLUMN関数で置き換えられるはずと考えて B1: {=MAX(OFFSET($A3,COLUMN(A1)-1,COLUMN(A1)-1,5,)*MOD(ROW(A1:A5),2))} C1: {=MAX(OFFSET($A3,COLUMN(B1)-1,COLUMN(B1)-1,5,)*MOD(ROW(B1:B5),2))} D1: {=MAX(OFFSET($A3,COLUMN(C1)-1,COLUMN(C1)-1,5,)*MOD(ROW(C1:C5),2))} としたところ、いずれもエラー #VALUE! が返ってきます。 なぜエラーになるのか理解できません。どなたか私にアドバイスをいただけませんか? 参考までに申し上げると、http://okwave.jp/qa/q5897615.html の質問の回答を考えているときに、上の問題に遭遇しました。

  • 情報を入力すると反映されるシート【説明画像あり】

    図1の、【入力シート】の黄色セルに、任意の情報を入力すると ⇒【反映シート】図2のように情報が反映されます。 しかし、【反映シート】を図3のように、列幅を変更したフォーマットにすると 図2のように反映されません 図3の列幅にしても、反映されるようにするには、どのように関数を変更すれば良いでしょうか?? ご存知の方、いらっしゃいましたら、宜しくお願いします。 【関数説明】 ★図2のA10セルに下記の関数が入っています。  同関数を、A10から、右に、L10までオートフィルドラック。  さらに、下に、L14まで、オートフィルドラックします。 =IF(MOD(COLUMN(A1),4)=1,IF(INT(COLUMN(A1)/4)*5+ROW(A1)>入力シート!$B$35,"",INT(COLUMN(A1)/4)*5+ROW(A1)),IF(AND(MOD(COLUMN(A1),4)=2,OFFSET(A10,0,-1)<>""),TEXT(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-1)/4)*5+ROW(A1)-1,1),"e"),IF(AND(MOD(COLUMN(A1),4)=3,OFFSET(A10,0,-1)<>""),MONTH(DATE(YEAR(入力シート!$B$39&"1日"),MONTH(入力シート!$B$39&"1日")+INT((COLUMN(A1)-2)/4)*5+ROW(A1)-1,1)),IF(AND(MOD(COLUMN(A1),4)=0,OFFSET(A10,0,-1)<>""),入力シート!$B$38+IF(OFFSET(A10,0,-1)=入力シート!$B$36,入力シート!$B$37,IF(OFFSET(A10,0,-1)=入力シート!$C$36,入力シート!$C$37,0)),"")))) ★★★上記関数は、教えてgoo回答者様にご教授いただきました★★★ ★B40には下記の関数が入っています。 =DATE(YEAR(B39&"1日"),MONTH(B39&"1日")+B35-1,25) ※図1と図2は、同じブック内にある、別のシートです。

  • Excelでこんな事出来ますか?2

    先日下記のような質問をさせていただきました。 >質問の仕方が下手かも知れませんけど・・・コクヨなどで発売している見積書などがありますよね!? まったく同じようにExcelでひな形を作成しました。 ただ、「数量」「単価」「合計(税抜・税込)」というのがあるのですが、合計を出すには「数量」×「単価」で問題ないのですが、答えが出る合計のところには9つのセルがあるんですよね。答えを桁合わせで各セルに表示させる事って出来るのでしょうか? 出来るのであれば嬉しいのですが・・・ 詳しい方教えて下さい。 よろしくお願いします。 この質問に対して下記のアドバイスをいただきました。 >9つのセルを使って =INT($A3*$B3/100000000) =INT(MOD($A3*$B3,100000000)/10000000) =INT(MOD($A3*$B3,10000000)/1000000) =INT(MOD($A3*$B3,1000000)/100000) =INT(MOD($A3*$B3,100000)/10000) =INT(MOD($A3*$B3,10000)/1000) =INT(MOD($A3*$B3,1000)/100) =INT(MOD($A3*$B3,100)/10) =INT(MOD($A3*$B3,10)) セルの幅を調節します。 これで、上手くセルに数字が収まったのですが、縦の 合計も同じように9つのセルがあるのですが、この場合の縦の合計はどのような巻数式になるのでしょうか? 質問が下手で申し訳ありませんが、詳しい方よろしくお願いします。

  • Offset indirectなどの使い方(Excel関数)

    次のような関数に直面しました。 =IF(OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)="","",OFFSET(INDIRECT("'ef="&$A$1&"'!B2"),ROW()-2,COLUMN()-2)) この関数全体の解説もしていただきたいのですが, 'ef=の'の使い方、!の使い方、ROW()-2の部分などにも 多少、説明を加えていただけると助かります。 なにか私のほうで情報提供が不足していれば教えてください。

  • Excelでこんな事出来ますか?(再登録)

    先日下記のような質問をさせていただきました。 >質問の仕方が下手かも知れませんけど・・・コクヨなどで発売している見積書などがありますよね!? まったく同じようにExcelでひな形を作成しました。 ただ、「数量」「単価」「合計(税抜・税込)」というのがあるのですが、合計を出すには「数量」×「単価」で問題ないのですが、答えが出る合計のところには9つのセルがあるんですよね。答えを桁合わせで各セルに表示させる事って出来るのでしょうか? 出来るのであれば嬉しいのですが・・・ 詳しい方教えて下さい。 よろしくお願いします。 この質問に対して下記のアドバイスをいただきました。 >9つのセルを使って =INT($D18*$G18/100000000) =INT(MOD($D18*$G18,100000000)/10000000) =INT(MOD($D18*$G18,10000000)/1000000) =INT(MOD($D18*$G18,1000000)/100000) =INT(MOD($D18*$G18,100000)/10000) =INT(MOD($D18*$G18,10000)/1000) =INT(MOD($D18*$G18,1000)/100) =INT(MOD($D18*$G18,100)/10) =INT(MOD($D18*$G18,10)) セルの幅を調節します。 これで、上手くセルに数字が収まったのですが、縦の 合計も同じように9つのセルがあるのですが、この場合の縦の合計はどのような関数式になるのでしょうか? 桁は9桁ありまして、上の桁からI35からQ35になっています。 本来なら一つのセルにしてしまえば簡単に出来るのですが、コクヨの見積り書式と同じ物を使いたくて、このような書式にしました。 本当に初心者で申し訳ないのですが、再度よろしくお願いします。 質問が下手で申し訳ありませんが、詳しい方よろしくお願いします。

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

    シート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    C   D    E   F   1日程 3/1 3/2 3/3 3/4 3/5 2 X2  70  50   3 Z1      110  4 Y1      30   40   90      5 X2           20       30 6 F1          100       80  となっている形式のものを(実際は日程が一ヶ月分表示されている、型式種類多い、2行目以下数字は日々の目標数) これを 1日程  型式 目標数 23/1  X2 70           50 33/2  Z1 110       Y1 30 43/3  Y1 40       X2 20       F1 100 53/4  Y1 90 63/5  X2 30        F1 80  のような形式、配列表示に変えたいのです。 型式をキーワードにしてVLOOK,INDEX関数を用いて各型式に必要な部材を目標数横右列に表示させたいと考えています。(1日単位毎に必要部材を分けたい)  上のクロス形式を日毎、型式毎の数量を分けたいと思っています。  そのため、行列を入れ替えたり、INDEXやOFFSET関数(慣れていない)数式を入れたりしていますが、上手く行きません。手作業でコピペして時間が掛かり、手間取っています。  日毎、型式毎の分けるのは無理でしょうか?月毎に進行表は変わります。日程列に空白セルが出ます。  派遣社員さんに仕事を教える必要から、極力、分かりやすいようにしたいのです。どなたかアドバイス戴けませんか。  

  • 【Excel】数式のコピー(再質問)

    Excel2003を使用しています。 http://personal.okwave.jp/qa3119521.html で、一度質問させていただいているのですが、再質問です。 Sheet1からSheet2へダイレクトにデータ参照させるのは難しいとのことで、作業用シートを経由して参照する方法を教えていただきました。 下記の数式を作業用シート(仮にSheet3)のA1セルに入力後、下方向へコピーすると、転記するべきデータが縦方向に表示されるようですが、A10セル以降が不要なデータが3行ずつ入り込んできているようで、うまく表示されません。  A1 = OFFSET(Sheet1!$B$7,INT((ROW()-1)/6),MOD(ROW()-1,6)) 次に、Sheet2のC7セルに以下の式を貼り付け、右方向と下方向にコピーするとよいとのことでした。  C7 = OFFSET(Sheet3!$A$1,(ROW(A1)-1)*9+MOD(COLUMN(A1)-1,9),0) 数式の中身を少しいじってみたのですが、うまくいきません。 どこを変更すればいいでしょうか?よろしくお願いします。

  • EXCELをつかってダースでの集計表を作りたい。

    エクセル(2007)の表で A1に牛乳の本数をダース表示で「1.11」(23本)と入力して A2に「0.01」 A3に「1.01」 とした数字が、A3で合計され、同じようにB列、C列にも数字がはいってD列が合計 した表を作りたいと思います。 検索してMODなどをつかった関数で作成したところ、「2.12」など端数が12以上で 表示されてしまいます。 条件は、 1最初に数量をいれる際もダース(1.01)で入力 2できれば、ひとつのセルにダース分と端数を入力/表示したい。 3計算結果をさらに合計したりして集計するので文字表示ではない方法を希望 自分なりには調べてみたのですが、意外と難しく思い通りの表ができなくて困っています。 何卒宜しくお願い致します。

  • C言語プログラム能力検定の問題でわからないところがあります

    今度C言語プログラム能力検定を受けるのですが、過去問の回答ではわからず質問させてもらってます(以下ソース) ------------------------------------------ #include<stdio.h> int mod(int a, int b); int d, f = 10; main() { int a,b,c; enum cl {g,h} a=12; b=5; c=mod(a,b); a++; ++b; c=mod(a,b); printf("c=%d\n",c); ←(1) } int mod(int b, int a) { int c; c=b/a; c=b-c*a; return(c); } -------------------------------------------------- 問題は(1)はどのように出力されるでしょう?といったもので、 答え(出力結果)は「1」でした。回答の説明によると 「変数cはmain関数内で宣言され、mod関数の戻り値が格納される。 mod関数の戻り値は二つの引数の剰余であり、ここでは2回目のmod関数 の戻り値が表示される。2回目の仮引数は、aが6で、bが13で戻り値は1になる」 ということでしたが>mod関数の戻り値は二つの引数の剰余であり… というのがよくわかりません…剰余算というのは「%」のことですよね? であれば「c= a % b」といった記述がでてくれば13÷6=2…1で「1」となり、理解できるのですが、それらしき記述がないので(--;) どなたか教えていただけないでしょうか? よろしくおねがいします。

専門家に質問してみよう