人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel・データ出力表示に関する質問です。
画像のようにパターン1〜パターン4まで、種類の違う情報が入っているとして、
画像右のように、全部のパターン内の情報をを1行ずつ出力する方法・関数等あれば教えていただけませんでしょうか?


1461675110
●拡大する

●質問者: hal-star
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 田舎のIT職人
●250ポイント

下記方法をご参考ください。
http://superdbtool.com/blog/archives/40


hal-starさんのコメント
田舎のIT職人様 早々にどうもありがとうございます。こんなすてきなものがあるんですね! ただ、当方環境 Office for Mac 2011のため、インストールでつまづきました>< OS Yosemite Ver.10.10.5です。 最初にお伝えしておくべきでしたね。すみません。Macでも使えるこういうものあったりしますでしょうか?

2 ● a-kuma3
●250ポイント ベストアンサー

VBA を使います。
以下のコードを標準モジュールに貼り付けて、write_perm サブルーチンを実行してください。

Const SOURCE_ROW = 3  ' 参照元(行)
Const SOURCE_COL = 2  ' 参照元(列) - B列
Const dest_row = 3  ' 書込先(行)
Const DEST_COL = 8  ' 書込先(列) - H列

Sub write_perm()
 Dim ref_rows()
 ReDim ref_rows(SOURCE_COL To Cells(SOURCE_ROW, SOURCE_COL).End(xlToRight).Column)
 row = dest_row
 Call write_perm_work(ref_rows, SOURCE_COL, row)
End Sub

Private Sub write_perm_work(ref_rows, ref_col, dest_row)
 For r = SOURCE_ROW To Cells(Rows.Count, ref_col).End(xlUp).row
 ref_rows(ref_col) = r
 If ref_col >= UBound(ref_rows) Then
 For c = LBound(ref_rows) To UBound(ref_rows)
 Cells(dest_row, DEST_COL + c - LBound(ref_rows)).Value = Cells(ref_rows(c), c)
 Next
 dest_row = dest_row + 1
 Else
 Call write_perm_work(ref_rows, ref_col + 1, dest_row)
 End If
 DoEvents
 Next
End Sub

このコードでは、組合せの元になるデータがあるシートと同じシートに、組み合わせのパターンを書き出すようにしてます。

先頭に書いてある定数で、元になるデータと書き込み先を指定します。
組合せの元になるデータの左上が B3 、組み合わせのパターンを書き出す先頭の位置が H3 としています。

Mac で Excel の VBA を試す環境がないのですが、特別なことをやっているわけではないので、多分、動くと思います。
パターンの数が 4 じゃなくても、動くようにしたつもりです。


質問者から

当方環境Mac OS Yosemite Ver.10.10.5
Office for mac2011です。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ