http://okwave.jp/qa4965370.htmlで質問させていただいた内容の発展です

A列にデータが入っているとします
たとえばA8:A50までとします(変動します)
A列の最終行50行目を取得したら、
S~U列8行目から、S~U列の、A列で取得した最終行目まで罫線を引きたいのです
(開始が8行目は決定しています)
罫線の設定はこちらで組めるので、そこまでの例を出していただきたいのですが……

S列のみだと、offsetで簡単にできたのですが、複数列にわたるとむずかしいでしょうか?

暇な時にでも回答お願いします

このQ&Aに関連する最新のQ&A

A 回答 (5件)

マクロの記録をとれば判ることを、繰り返し聞かないで、自分で考えること。

内容自体も難しいことは無い。
個々に質問する前に、もうすこし、勉強を広げて、一通りのVBAの勉強が必要と思う。VBAの解説書やその逆引き解説書を読んでから
考えるべきで、今の段階で何かやろうとすると、質問ばかりになるとおもう。
ーーー
罫線の引き様を、田の字型で良いとすると(このことも質問に書いてないが)
例えば、S2:U12を選択して(操作で)罫線を書く。マクロの記録をとると、
Range("S2:U10").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
・・
以下長いので略
このうちA列の最下行の行番号によって
Range("S2:U10").Select
のU10の10の部分が変わることは判るだろう。
そして(A列)データ最下行を捉えるのは(他にも方法が有るが)
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
End Sub
を実行して納得すること。この手法は定石で、ここの回答に頻繁に出てくる。
ForNexrを使って、ある列のセル全部に対し繰り返し処理をしたいとき必ず必要になる。
だから、最終形は
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
Range("S2:U" & d).Select
Macro1
End Sub
Macro1はマクロの記録(最初はMacro1と言う名になる)をとったコードの、始めのほうの
Range("S2:U10").Select
の行だけを削除したもの(を指す。それを1行だけ削除してそのまま使う)。
Range("S2:U" & d).Selectはほかにも書き方があるが、これが判りやすいと思うが、こういうことができると言うのも。他人のコードを見て、学んだことだ。要は経験のみ。
    • good
    • 0
この回答へのお礼

ありがとうございました
すみません、質問が曖昧で、異なる結果が出ました

お礼日時:2009/05/29 05:16

#1です。



A列のA8~A最終行と同行、且つS~U列と交差する範囲と言う事で、

Intersect(Range("A8", Cells(Rows.Count, 1).End(xlUp)).EntireRow, Range("S:U")).Select

と言う方法もありました。
ご参考程度に。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/05/29 05:13

こんにちは。



>S~U列8行目から、
ここに曖昧な表現がありますから、はっきりしませんが、なるべく忠実に表そうとすれば、こういうことだと思います。

Sub Test1()
Dim A As Range
Dim B As Range
Set A = Range("S8:U8")
Set B = Range("A65536").End(xlUp)
If B.Row > 8 Then
  Range(A, B).Select
End If
Set A = Nothing
Set B = Nothing
End Sub

>S~U列8行目から、
ここが、もしも確定していないのなら、

Sub Test2()
  Dim A As Range
  Dim B As Range
  Set A = Range("IV8").End(xlToLeft)
  If A.Column > 18 Then 'S以降
    If A.Column > 21 Then 'V以前
      Set A = Range("U8")
    End If
  Else
    GoTo EndLine
  End If
   Set B = Range("A65536").End(xlUp)
  If B.Row < 8 Then '8行以前
    GoTo EndLine
  End If
  Range(A, B).Select
EndLine:
  Set A = Nothing
  Set B = Nothing
End Sub

VBAもひとつの言語ですから、作業をVBA言語に映すことが可能です。こんなコードは通常ありえないのですが、もし、きんちと言葉がまとめられるなら、短くすることが可能だとは思います。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/05/29 05:12

いろんな方法があると思いますがたとえば、



Sub test01()
Range("A8", Cells(Rows.Count, 1).End(xlUp)).Offset(, 18).Resize(, 3).Select
End Sub

Sub test02()
x = Cells(Rows.Count, 1).End(xlUp).Row
Range("S8:U" & x).Select
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/05/29 05:12

>offsetで簡単にできたのですが、複数列にわたるとむずかしいでしょうか?


Resizeすればいいのでは。

Range("A8", Cells(Rows.Count, 1).End(xlUp)).Offset(, 18).Resize(1 , 3).Select

と言う事ではないかと。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/05/29 05:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qワードの罫線について

ワードの罫線についての質問です。
ワードの罫線で表を作ったりした場合、文章を書いたらそれに従って罫線が広がったりしますよね・・? そうではなく、文章を入力したりしても、動かない罫線を作りたいのですが、なにか方法はありますか・・?

Aベストアンサー

はじめまして

47歳,男性,会社員です。

以下の方法ではどうでしょう?

 表を選択した上で,メニューから
 「罫線(A)」→「表のプロパティ(R)」→「行」→「高さを指定する(S)」にチェック

 高さを入力・指定したあとに,
 
  →「高さ(I)」の設定を <最小値> ではなく<固定値>にする。

 この方法だと改行しても,罫線にもぐりこむようになりますが......


意図しているのと違っていたらゴメンナサイ。

Q【VBA】A列からU列まで罫線を引きたい

お世話になります。

マクロでA列からU列まで罫線を引いています。

行の指定は8行目から任意の最終行までで、
今のところ最下段のコードで罫線を引いております。

VBA上級者の方ならお気づきだと思いますが、
1列づつ8行目から最終行まで取得する方法はわかるのですが、
この形式でA列からU列まで指定するコードの書き方がわかりません。

実用上このコードでも問題ないのですが、
もっと能率よくコードを書く方法があると思います。
なので、すいませんが、詳しい方、説明の上手な方、
コードで直接説明出来る方、

8行目から任意の最終行までで、かつ、A列からU列まで罫線を引くための
効率の良いコードの書き方を教えて下さい。

お手数ですがよろしくお願いします。

---------------------------------------------
Sub 罫線を引く()

n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
For i = 8 To n

Cells(i, "A").Borders.LineStyle = True
Cells(i, "B").Borders.LineStyle = True
Cells(i, "C").Borders.LineStyle = True
Cells(i, "D").Borders.LineStyle = True
Cells(i, "E").Borders.LineStyle = True

Cells(i, "F").Borders.LineStyle = True
Cells(i, "G").Borders.LineStyle = True
Cells(i, "H").Borders.LineStyle = True
Cells(i, "I").Borders.LineStyle = True
Cells(i, "J").Borders.LineStyle = True

Cells(i, "K").Borders.LineStyle = True
Cells(i, "L").Borders.LineStyle = True
Cells(i, "M").Borders.LineStyle = True
Cells(i, "N").Borders.LineStyle = True

Cells(i, "O").Borders.LineStyle = True
Cells(i, "P").Borders.LineStyle = True
Cells(i, "Q").Borders.LineStyle = True
Cells(i, "R").Borders.LineStyle = True

Cells(i, "S").Borders.LineStyle = True
Cells(i, "T").Borders.LineStyle = True
Cells(i, "U").Borders.LineStyle = True

Next i

End Sub

お世話になります。

マクロでA列からU列まで罫線を引いています。

行の指定は8行目から任意の最終行までで、
今のところ最下段のコードで罫線を引いております。

VBA上級者の方ならお気づきだと思いますが、
1列づつ8行目から最終行まで取得する方法はわかるのですが、
この形式でA列からU列まで指定するコードの書き方がわかりません。

実用上このコードでも問題ないのですが、
もっと能率よくコードを書く方法があると思います。
なので、すいませんが、詳しい方、説明の上手な方、
コードで...続きを読む

Aベストアンサー

こんにちは

すでに回答は出ていますが、手作業と同じように対象セル全体をまとめて選択しておいて罫線を引けば良いということはご存知と思います。

変数nの行までの範囲を取得する方法としては、ANo1様が回答されている方法以外にも、

'左上と右下のセルで範囲を指定
 Range(Cells(8, 1), Cells(n, 21))

'最初の1行の範囲を必要な行数分に拡張
 Range("A8:U8").Resize(n - 7)

'左上のセルから必要な行・列数分に拡張
 Range("A8").Resize(n - 7, 21)

などでも、同じセル範囲を取得することが可能です。

個人的には最後のものが利用しやすいと感じています。
ご参考まで。

Qエクセルの表、罫線はワードで編集したい

お願いします。Office2003です。
メンバーの仕事内容を控えるための名簿をエクセルで作成しました。
しかし表の大きさと罫線の実線と点線の太さのバランスがとれないので、罫線はワードで編集したいと思います。

エクセルからどのような形式でワードに貼り付ければ、うまく罫線の編集ができるのでしょうか。

Aベストアンサー

テキストとして貼り付けて、

罫線-変換-文字列を表に

こちらでいかがですか。

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

Qワード2003,2007で罫線を使いこなしたいです。

ワード2003,2007で罫線を使いこなしたいです。

ワードの表や罫線を数多く使いこなし、作っている様式や書類をよくみます。
それらを真似て、作成しているのですが、表や罫線が上手くつかいこなせません。。

例えば、文書全体を罫線(or 表?)での囲み方は?
横の表に縦の線の挿入の仕方は?
初歩的すぎですが。。。

普通に簡単な表は作成できますが、罫線や表が用紙いっぱいのものになると
時間をかけてもかけても、うまくできません。

ご教示どうぞ宜しくお願いします。

Aベストアンサー

> 文書全体を罫線(or 表?)での囲み方は?
 
「ページ罫線」をお試し下さい。
 
「ページ罫線の設定」
http://kokoro.kir.jp/word/pagek2.html
「Word2007(ワード2007)基本講座:ページ罫線」
http://www.eurus.dti.ne.jp/~yoneyama/Word2007/word2007-pagekei.html
 
 
> 横の表に縦の線の挿入の仕方は?
 
表のセルを縦線で区切る意味であれば、
1) 「罫線を引く」ボタンを使って枠内でドラッグします。
  「表の作り方」
  http://hamachan.info/word/hyo.html#enpitu
  「罫線ツールバーの使い方」
  http://hamachan.info/word/h-kei.html
  「Word 2007でマウスを利用して罫線を引く方法」
  http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=011210
2) セルを分割すれば、結果的に縦に線が引けます。
  「セルを分割する / ワードの裏技」
  http://word-waza.seesaa.net/article/142095324.html
  「Wordで表のセルを分割する方法」
  http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=006767

> 文書全体を罫線(or 表?)での囲み方は?
 
「ページ罫線」をお試し下さい。
 
「ページ罫線の設定」
http://kokoro.kir.jp/word/pagek2.html
「Word2007(ワード2007)基本講座:ページ罫線」
http://www.eurus.dti.ne.jp/~yoneyama/Word2007/word2007-pagekei.html
 
 
> 横の表に縦の線の挿入の仕方は?
 
表のセルを縦線で区切る意味であれば、
1) 「罫線を引く」ボタンを使って枠内でドラッグします。
  「表の作り方」
  http://hamachan.info/word/hyo.html#enpitu
  「罫線ツールバーの使い方...続きを読む

QエクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1週間に6行要します。データBは月曜から金曜なので1週間に要するのは5行です。従って、単純にこの2つのデータを張り合わせるだけでは(データBをデータAのシートに張り合わせた時)、1週間に要する行数が違うので1行ずつずれてしまいます。

1週間に要する行数の違いだけでなく、マーケットが休みの日はデータそのものがないため日付が存在しません。(マーケットの休みもおのおの別の日でバラバラです。)

これらの理由により、ただ単に張り合わせるだけだとずれが広がるばかりです。

そこでデータAの日付とデータBの日付を認識して一致させる関数を教えて欲しいと思います。

データAの構成はA1=日付、B1=始値、C1=高値、D1=安値、E1=終値で、データBの構成も同じです。
データAのF1にデータAのA1と同じ日付のデータBの行を貼り付るように設定したいと思っています。

説明が分かり辛い場合は補足しますので、その際はご指摘下さい。

宜しくお願いします。

エクセルのワークシートAの1列目(A列)の日付と、ワークシートBの1列目(A列)の日付を一致させて1つのワークシートに纏める方法を探しています。

2つの時系列データがあるのですが、データA(為替データ)とデータB(株式データ)のデータ管理方法が下記のように異なっています。

データA(為替データ)・・・1週間のうち6日間(月曜から土曜まで)
データB(株式データ)・・・1週間のうち5日間(月曜から金曜まで)

おのおのワークシートのA列に日付が入っています。

データAは月曜から土曜までなので、1...続きを読む

Aベストアンサー

誤記がありましたね。ごめんなさい。

シートCのA2に
2010/1/1
を置いて下向けにえいやっとオートフィルドラッグ,365日の日付を並べておいて
B2:為替
=IF(COUNTIF(為替!$A:$A,$A2),VLOOKUP($A2,為替!$A:$E,COLUMN(B2)),"")
を右に下にコピー。
F2:株式
=IF(COUNTIF(株式!$A:$A,$A2),VLOOKUP($A2,株式!$A:$E,COLUMN(B2)),"")
を右に下にコピー。

これでマーケットの開いてなかった日付がエラーになることもありませんので,追加のご質問も解消でしょうか。

Qワードの表でセルの「枠なし」を選択したが、透明な罫線が引けない。

ワード2003で表を作り、いくつかのセルを罫線ツールバーの「枠なし」にしたのですが、透明な罫線が出ないで全く罫線が消えているのですが、文字を入力するのに便利なので透明な罫線にしたいのですが、どうしたらよいのでしょうか。

Aベストアンサー

透明な罫線という表現だと違うかもしれませんが、[表のグリッド線]の
ことでしょうか?
それなら、メニューから[罫線]→[表のグリッド線の表示]を選択すれば
薄いグレーになった印刷されない表専用のグリッド線が表示されます。

QEXCELの表、組[A列]:番号[B列] を 組[A列]:番号[行]に変換する方法

EXCELに
A列に組、B列に番号がそれぞれ反映されている表があります。
これを
A列に組、同行に番号が横並びに配置された状態に変更したいと考えております(添付画像)。

D列にはA列の組名を「重複なし」で貼り付けます。
このとき、E列~K列にどのような数式を入力すればよろしいでしょうか?
E1に入力する数式を教えていただけるとありがたいです。
何卒よろしくお願いいたします。

Aベストアンサー

こんばんは!

画像の配置だとE1セルに
=IF($D1="","",IFERROR(INDEX($B$1:$B$1000,SMALL(IF($A$1:$A$1000=$D1,ROW($A$1:$A$1000)),COLUMN(A1))),""))

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → E1セルを選択 → 数式バー内に貼り付け →そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にE1セルのフィルハンドルで列・行方向にずぃ~~~!っとフィル&コピーします。

こんな感じではどうでしょうか?m(_ _)m

Qワードです。罫線の枠でが次のページにいきます

ワードで文書を作ります。途中で罫線の枠を囲みました。

1ページの終わりぐらいに、罫線で枠を囲みました。
すると、罫線の枠が1ページに入らないと、自然に、次の2ページめにいきます。1ページの下が、あきます。

一太郎の場合は、罫線の枠が、1ページから2ページ目にかけて、あります。

ワードは、罫線の枠を、1ページ目から2ページにかけて、ひくことはできないのでしょうか。

教えてください。よろしくお願いします。

Aベストアンサー

段落罫線を使ってみてはいかが。

枠を設定したい範囲を選択します。
[線種とページ罫線と網掛けの設定]で[設定対象]が[段落]に
なっていることを確認して[囲む]を選択します。
http://www4.synapse.ne.jp/yone/word2010/word2010_danrakukeisen.html
段落がページをまたがっても、境の罫線がない自然な囲んでる
罫線になります。

Word2003以前の場合ならば、メニューの[罫線]の項目から
[線種とページ罫線と網掛けの設定]で設定できます。

Q行のデータ(a列b列c列)をd列に表示したい

a1、b1、c1のセルに入力したデータをd1セルに表示したい。可能でしょうか。一例「a1セルに1と入力、b1セルに2と入力、c1セルに3と入力しd1セルに123と表示する」

Aベストアンサー

d1セルに =a1&b1&c1

エクセルですよね?


人気Q&Aランキング

おすすめ情報