• ベストアンサー

エクセルで階層リストを作成

エクセルで以下の様な勘定科目のリストがあります。 これをエクセルの別シートに階層表示のリストにしたいのですが、知恵をお貸し下さい。 ≪勘定科目リスト≫ 【勘定科目名】 【属性名】 【階層】 【集計先名1】 【集計先名2】 売上高       集計    1    売上総利益   電気部門売上  集計    2    売上高     電気部門粗利   カメラ売上     原始    3    電気部門売上    食品部門売上   集計   2    売上高     食品部門粗利   惣菜売上      原始    3   食品部門売上   粗利         集計     1 電気部門粗利   集計   2    粗利   食品部門粗利   集計   2   粗利   ≪作成したい階層リストイメージ≫※レイアウトが見づらくてすみません。罫線は実際のシートには必要ありません。セルの階層表示されるのが目的です。 【勘定科目名】 【属性名】 【勘定科目名】 【属性名】 【勘定科目名】【属性名】 売上高       集計  電気部門売上   集計  カメラ売上   原始                                |-----PC売上   原始                | ------食品部門売上   集計    惣菜売上   原始     粗利   集計    電気部門粗利   集計            |-----食品部門粗利   集計  

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

再度結果を眺めてみて気づきました。 間違いあり。 階層一覧シートの見出し作成の部分 >Range("A1,D1,G1").Value = Array("属性1", "属性2", "属性3") これを Range("A1:I1").Value = Array("属性1", "", "", "属性2", "", "", "属性3", "", "") と入れ替えてください。 これで大丈夫。。(^^;;;  

moon3110
質問者

お礼

myRange様 ありがとう御座います! 試してみます。m(__)m

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です! たびたびごめんなさい。 投稿した後で、Sheet1のA列が抜けているのに気づきました。 今一度、Sheet1のみの画像をアップさせていただきます。 どうも何度も失礼しました。m(__)m

moon3110
質問者

お礼

tom04様 関数でもここまでできるんですね。何度も回答有難うございます! 参考になりました。 有難うございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! No.1です。 希望に添えるかどうか分かりませんが・・・ ↓の画像のように無理矢理関数でやってみました。 Sheet1が元のデータで作業列として、I・J列を追加させてもらっています。 階層の部分が問題になると思いますので、Sheet2に表示させるために Sheet1のI3セル =IF(D3=2,ROW()-2,"") Sheet1のJ3セル =IF(D3=3,ROW()-2,"") としてオートフィルで下へコピーしています。 このデータを利用して Sheet2のD3セル =IF(COUNT(Sheet1!$I$3:$I$10)>=ROW()-2,INDEX(Sheet1!$A$3:$A$10,SMALL(Sheet1!$I$3:$I$10,ROW()-2)),"") E3セル =IF(D3="","",VLOOKUP(D3,Sheet1!$A$3:$B$10,2,0)) G3セル =IF(COUNT(Sheet1!$J$3:$J$10)>=ROW()-2,INDEX(Sheet1!$A$3:$A$10,SMALL(Sheet1!$J$3:$J$10,ROW()-2)),"") H3セル =IF(G3="","",VLOOKUP(G3,Sheet1!$A$3:$B$10,2,0)) A3セル =IF(D3="","",ROUNDDOWN(D3,-3)) B3セル =IF(A3="","",VLOOKUP(A3,Sheet1!$A$3:$B$10,2,0)) としてそれぞれオートフィルでコピーすると画像のような表示になります。 尚、属性名に関してはまったく考慮に入れていませんが、 手入力かVLOOKUP関数で対応できるかと思いました。 なんか無理矢理って感じがしますが 参考になれば幸いです。 画像が小さいかもしれませんが、読み取りにくかったら 画面を拡大してみてください。 的外れの回答なら読み流してくださいね。 どうも何度も失礼しました。m(__)m

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

おや?、図が貼り付けられてますね。 そして、最初のとはちょと違う。。。 それから、図が小さすぎて見え難いです。 こういうときは、2つに分けて別質問に投稿する手もありますね。 で、図の項目などは最初の質問から推測してのコードです。 (注意事項) 勘定科目のシート名: 勘定科目 階層一覧のシート名: 階層一覧 としてあります。 '----------------------------------------- Sub Test()  Dim i As Long  Dim R As Long  Dim Flag As Integer '---- 階層一覧クリアー--------  Sheets("階層一覧").Cells.Clear '---- 階層一覧作成 --------  Sheets("勘定科目").Select  R = 2 For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row  Select Case Cells(i, "D").Value   Case 1     R = R + 1     Flag = 1     Sheets("階層一覧").Cells(R, "A").Resize(1, 3).Value = Cells(i, "A").Resize(1, 3).Value   Case 2     If Flag <> 1 Then R = R + 1     Flag = 2     Sheets("階層一覧").Cells(R, "D").Resize(1, 3).Value = Cells(i, "A").Resize(1, 3).Value   Case 3     If Flag <> 2 Then R = R + 1     Flag = 3     Sheets("階層一覧").Cells(R, "G").Resize(1, 3).Value = Cells(i, "A").Resize(1, 3).Value  End Select Next i '--- 階層一覧の見出しと罫線の作成 &列幅設定---- Sheets("階層一覧").Select Range("A1:C1").Merge Range("D1:F1").Merge Range("G1:I1").Merge Range("A1,D1,G1").Value = Array("属性1", "属性2", "属性3") Range("A1:I1").HorizontalAlignment = xlCenter Range("A1:i1").Interior.ColorIndex = 6 Range("A2:C2").Value = Array("【科目No】", "【勘定科目名】", "【属性名】") Range("D2:F2").Value = Array("【科目No】", "【勘定科目名】", "【属性名】") Range("G2:I2").Value = Array("【科目No】", "【勘定科目名】", "【属性名】") Range("A2:I2").HorizontalAlignment = xlCenter Range("A2:i2").Interior.ColorIndex = 6 Columns("A:I").AutoFit Range("A1", Cells(R, "I")).Borders.LineStyle = xlContinuous End Sub '----------------------------------------------- なお、言わずもがなのことですが、 階層一覧シートに予め見出しや罫線が設定してあれば 後半の部分と、はじめの数行目にある、 Sheets("階層一覧").Cells.Clear は不要になります。 また、一応、テスト済みですので、意図しない結果となった場合は 質問者の方に問題があることになります。。(^^;;; 以上ここまで。  

moon3110
質問者

お礼

myRange様 早速ありがとう御座います。 すみません、最初から図にすればよかったのですが、登録時の転記で間違えていました。しかも、図も小さくて・・・失礼しました。 ありがとう御座います。 試してみます!

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

マクロ(VBA)なら簡単にできますが ワークシート関数ではちょっと無理だと思います。 VBAでよければコードをアップします。   以上ここまで。    

moon3110
質問者

補足

myRange様 ありがとう御座います。 ぜひコードアップを御願い致します。 宜しく御願いします。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 質問の解釈が間違っていたらごめんなさい。 勝手に↓の画像のように表を作ってみました。 (属性名の欄は理解できなかったのでなにもしていません) 勘定科目名によってプルダウンリスト表示内容が選択できるようにしています。 画像の下側の表がSheet2になります。 Sheet2でそれぞれ範囲指定後に名前ボックスに入力していきます。 そしてSheet1の勘定科目をリスト表示させたいセルを範囲指定(列すべてでも構いません)し メニュー → データ 入力規則 → 「入力値の種類」でリストを選択 「元の値」の欄に =勘定科目名 としてOK 次に勘定科目名2の列を範囲指定 → 先ほどと同様にリストの「元の値」の欄に =INDIRECT(A2) としてOK 同じように勘定科目名3の列を範囲指定 → リストの「元の値」の欄に =INDIRECT(C2) としてOK これで「勘定科目名1」からリスト表示させていくと、前の勘定科目名に関する項目がプルダウンリストに表示されるようになります。 私か勝手に判断して回答していますので 的外れの回答なら読み流してくださいね。m(__)m

moon3110
質問者

補足

tom04様早速のご回答ありがとう御座いました。 私の質問内容の説明不足&質問が的確でなかったため、目的とは異なりましたが、とても参考になりました。ありがとう御座います。 再度イメージを掲載刺せて頂きます、お知恵お貸し下さい。 ※ピポットテーブルも試してみましたが、階層2までしか作成することが出来ません。

関連するQ&A

  • エクセルで「集計」操作時

    エクセルで、「集計」操作をすると、集計したいところにあらかじめ「レ点」が付きますが、希望するところに付きません。 (1)どこかに、記憶させておくことはできるのでしょうか? 仮に)部門別売上粗利表を「部署」「得意先名」「売上額」「粗利額」「受注番号」「備考」と有った場合、「備考」にレ点がついてしまいます。いつもこのレ点をはずし、売上、粗利にレ点をつけます。 面倒です、「集計」を削除して、また、セットする時、また、「備考」にレ点が付いています。「売上、粗利には付いていません」非常にめんどうなのですが、使い方が悪いのでしょうか? (2)また、集計した結果、「部署計」が同一部署の最後に表示されますが、総計は、すごく離れた行に出来上がります。最終部署計のすぐ下に出来上がって欲しいのですが・・・。 (3)それと、明細に罫線を付けていた場合、最終部署計と総合計には罫線が引き継がれません。そのため、毎回この行に、罫線を設定しています。なにかいい方法はあるのでしょうか?

  • エクセルで勘定科目の集計、勘定科目の並び順について

    現金出納簿をデータベース化して、勘定科目ごとに 集計をしたいと考えています。 日付 摘要 部門 勘定科目 収入or費用 金額 部門ごとに勘定科目の集計をとりたく、また摘要も つけたかったので、ピポットテーブルを使ってみました。まあまあ、欲しい表は出来たのですが、勘定科目の並び順がランダムでした。 規則的に並び替えしたいのですが、どうすればいいでしょうか? 科目コードをつける?と思っても、その先どうすれば いいのかわかりません。 関数で解決出来るのでしょうか? 関数の知識はあまりありません。マクロとなると全くありません。 アドバイスお願いします。

  • 弥生会計の元帳摘要集計の税込表示について

    縦軸に勘定科目(売上高)+部門 横軸に摘要を設定する所まではできたのですが、いざ集計すると税抜きででてきてしまいます。欲しいのは税込の集計表、どうすればできるのですか。初心者なので困っています。よろしくお願いします。

  • Excelで別のブックのセルを参照させるとき

    Excel2007です。 データ名「売上集計4月」・・・(1)のA1セルに、データ名「売上リスト4月」・・・(2)のA1セルの数値を表示させます。 データ(フォルダ)の階層は、 デスクトップ→売上フォルダ→売上集計→2011年度→売上集計4月 ・・・(1) デスクトップ→売上フォルダ→売上リスト→2011年度→売上リスト4月 ・・・(2) デスクトップ→売上フォルダ→売上集計→2010年度→売上集計4月 ・・・(3) デスクトップ→売上フォルダ→売上リスト→2010年度→売上リスト4月 ・・・(4) となっています。 ※2010年度と2011年度はフォルダで区別はされていますが、末端の階層だけをみると同じ名前のデータが存在する状態です。 (1)と(2)のデータを開いた状態でセルを選択して参照させると、 「売上集計4月」・・・(1)のA1セルには、='[売上リスト4月.xls]Sheet1'!A1と入ります。 この時、A1セルでは、(2)と(4)のデータは区別されているはずだと思うのですが、='[売上リスト4月.xls]Sheet1'!A1という表示内容からは、それが読み取れません。 例えば(2)のデータを誤って削除してしまった場合は、(4)のデータが勝手に参照されてしまったりするのでしょうか? (2)と(4)のデータ名自体に2010年度と2011年度の区別をつけた方がいいのでしょうか? ふと気付いて作業が止まってしまいました。 宜しくお願いします。

  • 売上勘定を複数設定してもよいか??【わかりにくい文章ですみません】

    いつもお世話になっております。 現在弥生会計を使っています。 今まで、売上は【「売上」という一つの勘定科目】に集め、その中で商品の部門ごとに「売上A」「売上B」~「売上I」という【9つの補助科目】に分類させていました。  勘定科目   補助科目   売上     売上A    (売上A-1、A-2・・・※手計算で集計)    〃      売上B            しかし、できるなら「売上A」のなかでも「売上A-1」「売上A-2」・・・と、さらに細分化して集計できるのが理想なのです。 そこで、「売上A」「売上B」~「売上I」という【9つの売上勘定】を設定し、それぞれを「売上A-1」「売上A-2」という【補助科目】に分類することは問題ないのでしょうか?  勘定科目        補助科目   売上A    売上A-1、売上A-2、・・・    売上B    売上B-1、売上B-2、・・・ 可能だとしたら、何か注意点などありますでしょうか? ちなみに、単に商品別の売上集計や推移などを知りたいだけなので(原価計算するわけではない)、経費などを部門ごとに分けるつもりはありません。 説明が下手で恐縮ですが、宜しくお願い致します!!

  • 条件によりドロップダウンリストの内容を変更する方法

    エクセルで、ドロップダウンリストの内容を、条件によって変えられるようにしたいのですが、教えて頂けるでしょうか。 例えば、A列に勘定科目名、B列に補助科目名を書いていきます。 具体的には、 勘定科目(1):旅費交通費 → 補助科目:電車、バス 勘定科目(2):交際費   → 補助科目:飲食代、贈答品 といった、関係です。 勘定科目名が少なければ、A列もドロップダウンリストにして、B列のドロップダウンリストにIndirect関数を使用すればいいようです。 ただ、勘定科目は、数十科目あります。 A列の勘定科目をドロップダウンリストにすると、かえってリストから選ぶのが大変になってしまいます。 そのため、A列は、直接入力のような形にして、そのうち、補助科目があるものについてだけ、B列でドロップダウンリストから選べるようにできないでしょうか。 なお、補助科目を持っているのは、10科目程度です。 エクセルの数式だけで簡単にできれば一番良いですが、難しいのであればVBAでトライしてみようかと思っています。 (あまり、VBAは得意ではないですが) 宜しくお願い致します。

  • Excelピボットでのカウント方法

    Excelピボットで1万件ほどのデータを集計しています。 部門、商品名、メーカー名、売上額、売上数量などがデータベースにあります。 基本的には売上等を部門ごとに集計するだけなのですが、「メーカー名」は重複するデータを1件としてメーカー数をカウントしたいのですが、ピポット上での方法がわかりません。 どなたかご教授いただけるととても助かります。

  • 受取利息での勘定科目(青色申告)

    受取利息のことですが、勘定科目に最初から設定されてないようで、自分で作ろうとしたんですが入力の仕方がわかりません・・ 「やるぞ青色申告」を使ってます 設定・登録→勘定科目に進んで勘定科目設定で 部門・分類・属性・補助科目の入力をどのようにしたらよいかわかりません>< よろしくお願いします

  • エクセルで既存の売上データに部門名を付け加えたい

    csvで書き出した売上データがあります。 エクセルで読み込みシート名を「売上リスト」としました。 列項目は、A列:商品番号、B列:商品名、C列:商品点数、D列:商品単価、E列:合計銀額です。 この売上リストに、F列:商品部門を後から付け加えたいと考えています。 別のシートに商品番号と商品部門が同じ行にある参照用データ「商品リスト」を用意しました。 商品リストも売上データ同様csvで書き出したもので、商品部門列が名称ではなく部門ID(数字)になっています。 そこで、A列:部門ID、B列:部門名の「部門リスト」を用意しました。 シート1:売上リスト(約400行) シート2:商品リスト(約600行) シート3:部門リスト(10行) 売上リストの各行に関連する部門名を付け加えるために、いくつか手順を踏まなくてはと推測できますが、どうしていいのかわかりません。 1.売上リストの商品番号を参照し商品リストの商品番号と一致する行の部門IDを呼び出す。 2.呼び出した部門IDを関連する名称に変更する。 のような感じになるのでしょうか。 初歩的な質問かもしれませんが、具体的にどうしたらいいのかさっぱりわかりません。 よろしくお願いします。

  • 弥生会計の売掛帳の補助科目にある得意先をあいうえお順にしたい

    弥生会計04Professionalを使っています。売掛帳の中の補助科目にある得意先をあいうえお順にしたいのですが、どうしたら変えられるでしょうか?現在は補助科目の右にあるプルダウンボタンをクリックすると得意先名が順不同で出てきてしまい、探すのに一苦労しています。なお、メニューバーのリスト→科目リスト→売上債権→売掛金に出てくる得意先名はあいうえお順に表示されています。ご指導よろしくお願いします。

専門家に質問してみよう