• 締切済み

エクセル リストボックスの順番入替について

エクセル2010で取引先の会社の名簿を作成しています。A列に取引先会社番号(1~)、C列に会社名、D列以降に会社情報を表記しています。B列は取引会社に子会社があれば1、なければ0としています。例)1/0 A商事 1/1 B商事(A商事子会社) 2/0 C商事 3/0 D商事 3/1 E商事(D商事子会社)。 順番を入替時用にユーザーフォームのリストボックスに直近の取引会社(A、C、D社)を表示しコマンドボタンで順番を入れ替えてます。(A、C、D社→D、C、A社等) ここまでは過去の例等を参考にしてできました。 リストボックスの順番にシートを入れ替える時、子会社がある場合どうしたらいいのでしょうか。また、D、C、A社順にした場合、並び替えだけだと3/0D商事、3/1E商事、2/0C商事、1/0A商事、1/1B商事となりますが、B列の番号を1/0D社、1/1E社、2/0C社、3/0A社,、3/1B社と変えるには、どうしたらよいか教えてください。

みんなの回答

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

#1です。 私の#1での説明記述上、漏れたのは、プログラムの中のAdditemの順序を変更することです。記述の(1)-(3)に、(4)に当たるものを追加します。 例えば 個別に項目を指定する方式を採った場合は Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "" UserForm1.ListBox1.AddItem "AA" UserForm1.ListBox1.AddItem "CC" UserForm1.ListBox1.AddItem "BB" End Sub のように、記述したコード行の順序のAA,CC、BBの順序に項目がリストボックスに表示されます。 ーー ちなみに Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "" UserForm1.ListBox1.AddItem Range("A1") UserForm1.ListBox1.AddItem Range("A2") UserForm1.ListBox1.AddItem Range("A3") End Sub のような書き方もできます。 質問はこういう状況が再々起こって面倒ということか?

回答No.2

うんまぁ・・なんというか・・・ パっと見た感想なんですけどね。 「取引先会社番号」ってそんなにコロコロ変わるもんです? 社内の基準がどうなっているか、部外者にはわからんのですが、 まずはその「コロコロ変わる」システムを見直すのが前では? ・・・と読めてしまいます。 一度クローズし、もう少しよく考えて再投稿なさってはいかがでしょう。

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

質問の表現が、ゴタゴタしていて、判りにくい。 特に子会社の例など質問者の特有のニーズで、丁寧に説明しないと状況がわか啞ない。 A現在データーー>B変わってほしい順のデータ を2列に並べてデータ実例で説明すべきではないか。 あるいは子会社のデータを数を多くしてセルの列に表現して説明すべきだろう。 ーー エクセルのリストボックスを使っているらしいが、 まず、リストボックスをユーザーフォームに乗せているということだね。 エクセル程度のコントロールでは、マウスなどを用いて、アイテム(表示明細)の順序をマウスなどで入れ替える操作は作られていないと思う。 このアイテムはエクセルでは、もとになる明細のあるセル範囲をセル範囲記号で(A1:A10のような文字列)指定する道も作られていてそれがメインのやり方だ。 だからそのセル範囲のデータを並べ替えすれば、仕舞ではないのか。 VBAなどを使えば(特にACCESSで)配列やSQL文を指定して、その実行結果で指定できるようになっている。SQLではOrder Byで結果の順序を簡単に指定できる。 だから順番を入れ替えるには、(1)手動でマウスで並べ替えるや、(2)ソート後には望みの順になるようなソートキーを新たな列に作って絵そこでデータ全体範囲をソートして使うほかないと思う。 ーー セルにあるデータを他の順序に並べ替えるのはワーク列が必要だったりして 非常に煩雑。並べ替えるべき順序数値を別に振って、元データと順序数を 同時に並べ替えるようなことをするほかない。後先がはっきりしているならば プログラムで、初歩的なアルゴリズムで、並べ替えもできそうだが、いづれにしろ、プログラム(VBA以上)ができないとダメ。 ーー エクセルを離れて、処理系により、リストボックスのDataSourceは (1)エクセルのセル範囲指定方式(セル範囲の文字列で) (2)配列 (3)SQL文そのものの指定 などを見かけるが(2)、(3)は順序を変えられる。 その場合もSort(並べ替え)の機能を使うだろう。 ーー 仕事にエクセルを使っているようだが、VBAの駆使が必須ではないか。 色々な考え方や、対処法が拡がると思う。 そうすれば、本件質問は、つまらない質問にと思えるのではないか。

関連するQ&A

  • VBAで2つのリストボックスの連動表示に関して

    VBAで2つのリストボックスの連動表示に関して、 ご教授、お願い致します。 VBAで色々、試行錯誤しております初心者です。 今回の質問ですけど、参考にWebで調べたのですが 分からなく、どのようにしたらいいのか 教えて頂けないでしょうか。 (例 リスト表) Sheet1(取引名簿)    (No.) (取引番号) (取引社名)                      A列    B列     C列    ・・・                1   1   A-0001     A社    ・・・             2   2   B-0001 B社     ・・・ 3   3   A-0002 C社    ・・・ 4   4   A-0003  D社     ・・・ 5   5   B-0002 E社    ・・・ ・ ・ ・ Sheet2(顧客名簿) (No.) (取引社名) (顧客名) A列    B列     C列   ・・・ 1   1 A社     顧客1 ・・・ 2   2     B社 顧客2  ・・・ 3   3    A社   顧客3 ・・・ 4   4    C社   顧客4 ・・・ 5   5 A社 顧客5 ・・・ ・ ・ ・ 上記、例題 2つのシートリストを条件に合わせ、2つ目のリストボックスに 連動表示させたいのですが処理できるように教えて頂けないでしょうか。 ※ ListBox1 に Sheet1 の B列(取引番号) と C列(取引社名) を表示し、 ListBox2 には、 Sheet1 で選択した取引会社に連動し、 C列の顧客(条件一致者)全員を ListBox2に表示したいのです。 (例) ListBox1でSheet1の中からA社を選択したとします。 連動でListBox2には、A社の顧客1、顧客3、顧客5が表示するように出来ないでしょうか。 説明下手で申し訳ありませんが宜しくお願い致します。

  • 再度、2つのリストボックスの連動表示に関して

    先日、VBAで2つのリストボックスの連動表示に関して(投稿日時 - 2013-08-31) ご質問させて頂き、mitarashi さんにご回答、ベストアンサーをしたのですけれども、 お恥ずかしい事ですが自分でUserFormへの載せ替えを試行錯誤して やってみたのですがVBA初心者の私じゃ中々、旨く行かないもので 再度、質問させていただきました。 VBAでUserForm上の記述をご享受お願い致します。 mitarashi さんに再度、ご回答して頂きたいのですが 無理のようでしたら mitarashi さん以外のVBAに精通しておられる方もご回答お待ちしております。 【前回の質問】 (例 リスト表) Sheet1(取引名簿)    (No.) (取引番号) (取引社名)                      A列    B列     C列    ・・・                1   1   A-0001     A社    ・・・             2   2   B-0001 B社     ・・・ 3   3   A-0002 C社    ・・・ 4   4   A-0003  D社     ・・・ 5   5   B-0002 E社    ・・・ ・ ・ ・ Sheet2(顧客名簿) (No.) (取引社名) (顧客名) A列    B列     C列   ・・・ 1   1 A社     顧客1 ・・・ 2   2     B社 顧客2  ・・・ 3   3    A社   顧客3 ・・・ 4   4    C社   顧客4 ・・・ 5   5 A社 顧客5 ・・・ ・ ・ ・ 上記、例題 2つのシートリストを条件に合わせ、2つ目のリストボックスに 連動表示させたいのですが処理できるように教えて頂けないでしょうか。 ※ ListBox1 に Sheet1 の B列(取引番号) と C列(取引社名) を表示し、 ListBox2 には、 Sheet1 で選択した取引会社に連動し、 C列の顧客(条件一致者)全員を ListBox2に表示したいのです。 (例) ListBox1でSheet1の中からA社を選択したとします。 連動でListBox2には、A社の顧客1、顧客3、顧客5が表示するように出来ないでしょうか。 説明下手で申し訳ありませんが宜しくお願い致します。

  • VBA コンボボックス リスト表示について

    初心者ですいません エクセル VBAのフォームでコンボボックス3つと、テキストボックス3つがあります シートのListにA~F列までのデータがあり、コンボボックス1にA列のリストを表示し コンボボックス2にA列で選んだリストを参照したB列のリストを表示し、コンボボックス3 にコンボボックス1,2で選んだリストを参照し、C列のリストを表示した後、 コンボボックス1,2,3で選ばれたもののD列、E列分をテキストボックス1,2に 反映しようと思っておりますがうまくいきません どのようにしたらよいか、おしえてください 宜しくお願いします ちなみに、リストの内容は A列   B列   C列     D列   E列 テレビ 42インチ  HDD内蔵  台    100,000 テレビ 32インチ  BD内蔵   台     80,000 テレビ 19インチ          台     50,000 ビデオ HDD   1TB     台    100,000   ビデオ HDD   500GB    台     80,000 ビデオ BD            台     70,000 が、入ってます 希望は、質問の際のカテゴリ選択のようになればよいのですが... さらに、希望を言えば、自動で、行ごとに1,2,3...と番号を振るようにしており スピンボタンで番号を選べば、登録された上記のデータをフォームに反映させるようにしております これもうまくいきません お願いばかりで申し訳ありませんが 宜しくお願いします

  • エクセル 並べ替えについて

    エクセル 並べ替えについて A列 B列 C列 取引先 売上額 納付確認日 A商事 10000 1月1日 B商事 20000 1月2日 C商事 30000 1月3日 D商事 40000 1月4日 E商事 50000 1月5日 シート1にエクセル2003で上記のような表を作っています。 今から売り上げを加算して帳簿につけるのですが、C商事だけ 別会計になっています。 VBAでC商事だけ以下のように省いて、シート2に自動的にはじく ようにしたいのです。 初心者ですいませんが、ご教授していただければ嬉しいです。 シート1 A列 B列 C列 取引先 売上額 納付確認日 A商事 10000 1月1日 B商事 20000 1月2日 D商事 40000 1月4日 E商事 50000 1月5日 シート2 A列 B列 C列 取引先 売上額 納付確認日 C商事 30000 1月3日 よろしくお願いします。

  • 入力値をListボックスに表示させたい。

    (仕様1) ユーザーフォーム1でテキストボックス1~5に 入力した値をListボックスに表示させたい。 例えば textbox1=A,textbox2=B,textbox3=C・・・ と入力されたら、 A B C D E のように順に横方向一列に表示させるようにしたいです。 (仕様2) これをコマンドボタン1を押す度にリストボックス1に新しく追加されていく 様にしたいのですが、できますでしょうか。 例えば、 A B C D E A C D B E (テキストボックスに入力後ボタン1を押す) A C B D E (テキストボックスに入力後ボタン1を押す)

  • エクセル シート分離について

    エクセル シート分離について 一度質問させていただきましたが、もう少し勉強したいので 回答を聞かせていただきたいです。 A列B列C列 取引先売上額納付確認日 A商事100001月1日 B商事200001月2日 C商事300001月3日 D商事400001月4日 E商事500001月5日 シート1にエクセル2003で上記のような表を作っています。 今から売り上げを加算して帳簿につけるのですが、C商事だけ 別会計になっています。 VBAでC商事だけ以下のように省いて、シート2に自動的にはじく ようにしたいのです。 初心者ですいませんが、ご教授していただければ嬉しいです。 シート1 A列B列C列 取引先売上額納付確認日 A商事100001月1日 B商事200001月2日 D商事400001月4日 E商事500001月5日 シート2 A列B列C列 取引先売上額納付確認日 C商事300001月3日 よろしくお願いします。

  • EXCELで検索用のリストBOXを作りたいのですが

    お世話になっております。 EXCELで検索用のリストBOXを作りたいのですが、作り方を教えていただけないでしょうか? 現在、以下のような表がありまして、 顧客番号 会社名 都道府県 住所  TEL 001    A社   東京    ○○   ×× 002    B社   静岡    △△   □□ この表の上にツールボックスのリストボックスかコンボボックスを作って検索をかけたいのです。 リストボックスに会社名を入力すると(会社名の一部でも可)ヒットしたリストが出てきて、選択した会社の行がフィルタリングされて表示するようにさせたいのですが、そのような事が出来るのでしょうか? 宜しくお願いします。

  • excelでリストボックスで選択した値に定められた値を返す

    excel2000で計算シートを作っています リストボックスで会社名をえらぶと 例:A社 B社 C社 ・セルC2に、A社なら1000 B社なら1200 C社なら800 とあらかじめ定められた値を返す 関数で、値を返すことはできるのですが リストボックスを範囲として指定できないのでしょうか? また、上記をVBAを使わずに、設定することは可能でしょうか? 宜しくお願いいたします

  • A列に同じ文字列があればB列値を合算することは可能ですか

    エクセルで次のような事を行う事は可能でしょうか、毎月、同じことを行っているので、良い案があればぜひ教えて下さい。 列A 列B (株)A商事 20 (株)B社 10 DSS社 50 (株)B社 40 (株)A商事 30 と言うデータベースがあるとします。 列Aにある会社名の中で同じ会社があれば合計して列C、列Dに表示する事はかのうでしょうか? 結果としてこのように求めたいのです。 列A 列B 列C 列D (株)A商事 20 (株)A商事 70 (株)B社 10 (株)B社 50 C商事(株) 15 C商事(株) 15 (株)A商事 20 DSS社 50 (株)A商事 30 DSS社 50 (株)B社 40 非常に膨大な数があり困っています。よろしくお願いいたします。

  • エクセル

    エクセルの質問です。 同じシート内で      A     B    C     D     E        1 〇〇商事  10       ××商事  20 2 ××商事  5        〇〇商事   3 という入力があります。 教えて下さい。 CにA列と同じ企業をD列から探してEの数値を表示させたいのですが何か方法はありあすでしょうか? ちなみにAもDも1000行くらいあるので関数か何か方法はないか探しております。 皆様宜しくお願い致します。

専門家に質問してみよう