Results of 1 - 1 of about 103 for フォーマット 自動 印刷 (0.009 sec.)
フォーマット (1423), 自動 (14517), 印刷 (5709)
- [[20111020082648]]
- #score: 8137
- @digest: 5c26f050aad2c602795524b95a54a693
- @id: 56348
- @mdate: 2011-10-20T08:18:50Z
- @size: 5694
- @type: text/plain
- #keywords: ├──┼──────┼ (23246), ├──────┼ (22862), 題1 (8430), 題2 (8301), 題3 (7635), mycol (6015), 表題 (5658), 結合 (3465), mergecells (3015), 〜" (2482), mergearea (2180), 目視 (2090), 右隣 (1624), 半分 (1428), と" (1250), 枚数 (1241), │ (1235), 絶対 (1069), xltoleft (1009), columns (736), チェ (696), ケー (692), e5 (677), ェッ (630), 両方 (575), cells (571), msgbox (543), 印刷 (540), デー (461), 複数 (457), 判断 (456), セル (445)
- 『セル結合を多用した表のなかでの検索と判断』(もんもん)
いつもお世話になっております。 セルの結合を多く用いた表の中から特定の文字列を探して、その隣のセルの内容に よって処理を分ける方法を教えてください。 例えば、4列4行ずつ、あるいは4列2行ずつセルを結合した表があるとします。 下記の状態で、A1,E1,E3はそれぞれ表題です。 また、A5,A9,A11…の値はそれぞれ、0A,0B,0C…と決まっています。 データはE5以降に入っています。 同様の形式で複数の表(1シートに1つ)があるのですが、なかにはデータがない ものもあります。そのような表は、その後の処理を飛ばしたいのです。 「データがない表」という条件は、E5とE7のどちらかまたは両方に「以下余白」または 「BLANK」の文字がある、あるいは両方とも空白である、ことです。 ┌──┬──────┬ │A1 │E1(表題2) │ │(表 ├──────┼ │題1)│E3(表題3) │ ├──┼──────┼ │ │E5 │ │A5 ├──────┼ │ │E7 │ ├──┼──────┼ │ │E9 │ │A9 ├──────┼ │ │E11 │ ├──┼──────┼ 困っているのは、たまに結合のしかたが少し異なる表があることです。 例えば、A列だけ結合から除外してあったりするとE5はF5になってしまいます。 方法として考えたのは、表題1から0Aと0Bの縦並びを見つけて(0Aだけではデータ 内容と重複する恐れがあるため)、そのとき0Aが入っていたセルの右隣の上半分と 下半分のセルの内容を調べるということです。 表題1の下のセルの右隣というのもありますが、その表題もITEM No.やbセったりします。 他にも方法があるかとおもいます。 どのようにVBAを作ればいいのでしょうか? 教えてください。よろしくお願いします。 (WindowsXP, Excel 2003) ---- >例えば、A列だけ結合から除外してあったりするとE5はF5になってしまいます。 A列が結合からはずされている場合、なぜ E5がF5になるのか、その因果関係がわからないなぁ・・ それと、「例えば」ということは、そのほかのケースもありうる? もしそうなら、人間が目で見て判断するしかないねぇ。「例えば」のケースを全て特定して列挙してくれれば 考えることもできるけど。 結合云々の前に、E5になったりF5になったり(あるいはそれ以外)ということは、あるシートがあって 入力担当者によって、ある項目をE5に書いたりF5に書いたり、あるいはそれ以外に書いたりしていて それをVBAでチェックしたいといっているのと同じなので。 もう1つ。本来はエクセルを最大限に活用しようとすれば、1レコード1行が「原則」で、 その形でメンテされているものを「見栄えをよくするために」アップされたフォーマットに加工するというのが たぶん望ましい方法なんだろうね。 まぁ、そうはいっても、客先から送られてきたブックで、依頼しても要求を聞いてくれないケースは 多いんだろうけど。 あぁ、それと、セルが結合されているシートって扱いにくいので、どんな処理をするかにもよるけど このシートをコピーして複製シートをつくって、そのシートの結合をはずして、そこで処理するという ことも考えられるかもね。 (ぶらっと) ---- わかりにくくてすみません。 > A列が結合からはずされている場合、 例えば、A列は結合されていなくて、B1〜E4で結合されている場合ということです。 その場合、表題3の下をクリックするとF5になると思います。 例えばばかりで申し訳ありませんが、複数の人が何年も前からファイルをコピーしたり 修正したりして作成し続けている表なので、今から形式を変えることはできないのです。 最終的な目的としては、複数のファイルの複数のシートにある表を一気にプリントアウトしたい のです。ただしデータが入っていない表は印刷したくないのです。 セルE5とE7の値を調べるVBAで印刷したものと、調べずにすべて印刷した後で目視でデータの ない表を除けたものと比較したところ、枚数に違いがありました。 調べた結果、あるファイルの表の結合の状態が他と異なるため、E5とE7が空白とみなされて しまい印刷されなかったのです。 目視でデータのない表を除ける作業は簡単ですが、枚数が多いと時間もかかるし 間違いの恐れもあるので、自動的にできるといいなと思ったのですが・・・ (もんもん) ---- う〜ん・・「例えば」ではねぇ・・・ それにかわる、「確かなルール」はあるのかな? ・2行ずつの結合は「例えば」ではなく「絶対」 ・だからチェックするセルは5行目と7行目、これは「絶対」 ・チェックする列は、「その行」に最初にあらわれる「列結合セルの右」、これは「絶対」 とか。 上記だったら、以下、参考コード。 Sub Test() Dim z As Long Dim j As Long Dim myCol As Long Dim ck1 As String Dim ck2 As String If Range("A1").CurrentRegion.Rows.Count < 5 Then MsgBox "データはないよ〜" Exit Sub End If For j = 1 To Cells(5, Columns.Count).End(xlToLeft).Column If Cells(5, j).MergeCells And Cells(5, j).MergeArea.Columns.Count = 1 Then myCol = j Exit For End If Next If myCol = 0 Then MsgBox "表題2,3用の列はないよ〜" Exit Sub End If ck1 = Cells(5, myCol).Value ck2 = Cells(7, myCol).Value MsgBox "チェックすべきセルの値は、きっと " & ck1 & " と " & ck2 & " なんじゃないかな?" End Sub (ぶらっと) ---- ↑でも結果は出るだろうけど、ちょっと「おばか」なところがあったので訂正して再掲。 Sub Test2() Dim z As Long Dim j As Long Dim myCol As Long Dim ck1 As String Dim ck2 As String If Range("A1").CurrentRegion.Rows.Count < 5 Then MsgBox "データはないよ〜" Exit Sub End If For j = 1 To Cells(5, Columns.Count).End(xlToLeft).Column If Cells(5, j).MergeCells Then myCol = j + Cells(5, j).MergeArea.Columns.Count Exit For End If Next If myCol = 0 Then MsgBox "表題2,3用の列はないよ〜" Exit Sub End If ck1 = Cells(5, myCol).Value ck2 = Cells(7, myCol).Value MsgBox "チェックすべきセルの値は、きっと " & ck1 & " と " & ck2 & " なんじゃないかな?" End Sub (ぶらっと) ...
-
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201110/20111020082648.txt
- [detail]
- similar
PREV
NEXT
Powered by
Hyper Estraier 1.4.13, with 97059 documents and 608315 words.
訪問者: