|
トップ > インターネット、PCと家電 > ソフトウェア > Office系(Word、Excel) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1124596456 >エクセルでこんなことできますか?マクロ?関数?マクロ・関数の合せ技?自分で... に対する回答案です。ぼさっとしている内に締め切られていました。 -------------------------------------------------------------------------------- >エクセルでこんなことできますか? >マクロ?関数?マクロ・関数の合せ技? >自分では解決できないので知ってらっしゃる方いましたら教えてください。 >詳しくは下図参照なんですが、 >データベースのセルに任意の数字・名前を打込むと各々のシートのセルに上から順番に埋められていくようなことってどうしたらできるのでしょうか? 関数だけでできないこともないでしょう。ただ柔軟性と言う意味で実用性は疑問ですけど。 マクロ(VBA)だけで実現するのも、ロジック的には大変ですね。 本来Excelの抽出はフィルタ機能くらいまでで、それ以上の機能をもたせるのは難があります。 一応サンプルを組みましたので、 (1)シート関数のみバージョン B列にワークエリアを設定しています。 (2)シート関数+マクロ(VBA)バージョン (1)同様にB列にワークエリアを設定しています。 この列がないと、ロジックだけで組むのは骨が折れます。 (3)PIVOTバージョン H,I列は関係ないです。 参考まで。 http://yokohamaloving.web.fc2.com/sample-select.xls -------------------------------------------------------------------------------- 画像は、 (1)でエラー回避前の状態。 (1)でエラー関数の状態確認。 (1)でエラー関数を利用してエラー回避した後の状態。 (2)で実行後の状態。ソースは以下。(注:全然ソースの整理はしていません。) (3)で実行後の状態。 となっています。 以下、(2)のソース。 Dim iRow
For i = 1 To 3
'clear
iRow = 4 + 10 * (i - 1)
j = 1
For iRowWork = iRow To iRow + 10
Cells(iRowWork, "J") = ""
Next
'hitset
Do While j <= 10
hitVal = ""
For jRow = 3 To 13
If Cells(jRow, "B") = Trim(Str(i & j)) Then
hitVal = Cells(jRow, "C")
Exit For
End If
Next jRow
If hitVal = "" Then Exit Do
Cells(iRow, "J") = hitVal
iRow = iRow + 1
j = j + 1
Loop
Next
End Sub
勝手にTAG【Excel】【Excel VBA】 |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア





