ここから質問投稿すると、最大4000ポイント当たる!!!! >>

excel2007を使用してます。

1行目に入力されているデータを2行目以降の空白になっている行にコピー・ペーストを自動でできるようにしたいです。

1行目 12345 abc 7777V ・・・

2行目 12345 abc 7777V ・・・

(別の作業時に1行目の内容は変更されます)
1行目 44556 xyg 555555G ・・・
2行目 12345 abc 7777V  ・・・

3行目 44556 xyg 555555G ・・・


1行目 99887 イロハ 99880D ・・・
2行目 12345 abc 777V ・・・
3行目 44556 xyg 555555G ・・・

4行目 99887 イロハ 99889D ・・・

という感じで1行目に新しいデータが入るので、1行目に入ったデータを空いている行にコピー・ペーストを自動でできるようにマクロを組みたいのですが全然うまくいきません。
ネットで
Sub Macro1()
  n = Cells(Rows.Count, "C").End(xlUp).Row + 1
  Range("C" & n).Select
  ActiveCell.FormulaR1C1 = "新宿区"
というマクロを見つけて変更してみたり

Sub Sample2()
With Range("A1")
Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(.Rows.Count).Value = .Value
End With
End Sub
というマクロを見つけて試してみたり、変更してみたりしたのですが全部の行をコピー・ペーストすることができませんでした。
どのように書き換えたら上記のようにできるのか教えてもらえると助かります。

A 回答 (1件)

こんにちは




最終行を取得するのにどの列を使えば良いのか(必ず値がある列)わかりませんが、仮にA列を利用して良いものとすれば、

Rows(1).Copy Destination:=Cells(Rows.Count, 1).End(xlUp).Offset(1).EntireRow
で、いかがでしょうか?
    • good
    • 0
この回答へのお礼

教えて頂きありがとうございました!
できました、本当にありがとうございました!
助かります!!

お礼日時:2019/02/19 14:58

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

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

Qエクセル リストと完全一致するセルに色をつける

シート1のA列とB列に
aaa ccc
bbb ggg
ccc kkk
ddd ooo
と言うリストがあって、A1〜A4はAチーム、B1〜B4まではBチームと名前を付けています
シート2にAチームのリスト4個が続いているものがあればセルを赤、Bチームのリスト4個が続いているものがあればセルを黄色に塗りたいです
AチームとBチームの中には同じ品番がある時もあります
条件付き書式で設定は出来るでしょうか?

Aベストアンサー

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル

 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4

 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5

 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

の4パターンについてそれぞれ調べれば良いだけ。

自分なら
 aaa-bbb-ccc-ddd
のようにシート1から文字列を作り、それが調べるセルで同じパターンになるかを調べます。
シート1はA5セルから、シート2はA11セルからデータが入力されているなら、

 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A11 & A12 & A13 & A14
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A12 & A13 & A14 & A15
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A13 & A14 & A15 & A16
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A14 & A15 & A16 & A17

という条件になる。
この4つのうちの一つでも条件を満たせばセルに赤色を付ければいい。
「Bチーム」についても同様にすればいいので、
この場合、8つの条件式を設定することになります。

面倒でもこの考え方ができていないと、ちょっと条件が変わっただけで対処できずに終わります。
冒頭で「並び順」について書きましたが、並び順がシート1のリストの通りでなくとも色を付けたい場合でも、この考え方は必要ということです。

・・・
ちなみに厄介なのが、どちらのチームにも「ccc」がいるというところかな。
これが無ければ違う方法でシンプルにできるんですけどねえ。

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付け...続きを読む

QExcelでフィルターを使わずに抽出するにはどうしたらよいのでしょうか

お世話になります。
画像のようにしたいです。
よろしくお願いいたします。

Aベストアンサー

こんな感じでしょうか(Excelっぽくないけど)。
ちなみに、最初の画像のレイアウトを想定して作っています。列の間隔はご自分で調整してください。

Sub sample()
Dim i As Long
Dim c As Long
Dim r As Long
c = 4
r = 2
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
Cells(r, c).Value = Cells(i, "A").Value
Cells(r, c + 1).Value = Cells(i, "B").Value
If Cells(i, "A").Value = Cells(i + 1, "A").Value Then
r = r + 1
Else
c = c + 2
r = 2
End If
Next i
End Sub

こんな感じでしょうか(Excelっぽくないけど)。
ちなみに、最初の画像のレイアウトを想定して作っています。列の間隔はご自分で調整してください。

Sub sample()
Dim i As Long
Dim c As Long
Dim r As Long
c = 4
r = 2
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
Cells(r, c).Value = Cells(i, "A").Value
Cells(r, c + 1).Value = Cells(i, "B").Value
If Cells(i, "A").Value = Cells(i + 1, "A").Value Then
r = r + 1
Else...続きを読む

QExcel フィルコピー時の範囲定数増加の方法について

以下の基準セルを右方向にフィルコピーした際に、参照範囲が99ずつ増えるような式を組みたいのですが、ご教示いただけないでしょうか。
お手数おかけしますが、なかなか上手くいかご協力いただけますと幸いです。

基準となるセルの数式
=SUMIF('2019'!$F$1200:$F$1299,設定シート!$C$2,'2019'!$J$1200:$J$1299)

基準となるセルの右横のセルの数式
=SUMIF('2019'!$F$1300:$F$1399,設定シート!$C$2,'2019'!$J$1300:$J$1399)

Aベストアンサー

INDIRET関数が便利です。

なお、最初のセルの行番号が 1200であることを示す補助行が必要です。
補助行を1行目、数式を2行目とします。

A1: 1200
B1: =A1+100

A2(基準となるセルの数式):
=SUMIF(INDIRECT("2019!$F$"& A1 &":$F$"& A1+99),設定シート!$C$2,INDIRECT("2019!$J$"& A1 &":$J$"& A1+99))

B2(基準となるセルの右横のセルの数式):
A2を入力後、A2をセルコピーすれば作成可。以下になれば問題なし

=SUMIF(INDIRECT("2019!$F$"& B1 &":$F$"& B1+99),設定シート!$C$2,INDIRECT("2019!$J$"& B1 &":$J$"& B1+99))

ここまで完成したら、
続き(C1&C2以降)は、B1&B2を選択して横にコピーすれば伸ばせます。

Qエクセルで置換シートを用いた変換について教えてください。

エクセルで日本語で書かれているsheet1をsheet2にある英語変換表を用いて英語に変換したいのですが、以下のマクロで実行すると、
例えば「建物」は「Building」になるのですが「建物附属設備」は「Interior Work」に変換されるべきところ「Building付属設備」となってしまいます。
他にも置換リストに同様の参照事項があると、同様に「日本語+英語のミックス」になるのですが
これはどのように改善すればよろしいでしょうか?
マクロは全くの素人で、ネットでこのようなことを書いてくださっている記述をコピペしただけなので、ド初心者にどうぞよろしくご指導ください。m(__)m



Sub 置換() 'この行から
Dim i As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
For i = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
wS1.Cells.Replace what:=wS2.Cells(i, "A"), replacement:=wS2.Cells(i, "B"), lookat:=xlWhole
Next i
End Sub 'この行まで

エクセルで日本語で書かれているsheet1をsheet2にある英語変換表を用いて英語に変換したいのですが、以下のマクロで実行すると、
例えば「建物」は「Building」になるのですが「建物附属設備」は「Interior Work」に変換されるべきところ「Building付属設備」となってしまいます。
他にも置換リストに同様の参照事項があると、同様に「日本語+英語のミックス」になるのですが
これはどのように改善すればよろしいでしょうか?
マクロは全くの素人で、ネットでこのようなことを書いてくださっている記述をコピ...続きを読む

Aベストアンサー

No.2・4です。

ん~~~
何も変化なしですかぁ~~?
こちらではちゃんと置換できたのでそのままコードを記載したのですが・・・

一つ気になるのは、Zongaiさまの補足欄に
>A1に 建物 B1にBuilding
>A2に建物付属設備 B2にInteriorWork

とありますね。
お示しのコードはSheet2の2行目以降のループになっているので
当然1行目は項目行で置換データは2行目以降にあるものだとして投稿しました。

もし1行目から置換データがあるのであれば
前回のコードの変更が必要です。

Sub 置換2()
 Dim i As Long, lastRow As Long
 Dim wS1 As Worksheet, wS2 As Worksheet
  Set wS1 = Worksheets("Sheet1")
  Set wS2 = Worksheets("Sheet2")
   lastRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row
   wS2.Range("A:A").Insert
    Range(wS2.Cells(1, "A"), wS2.Cells(lastRow, "A")).Formula = "=LEN(B1)"
    wS2.Range("A1").CurrentRegion.Sort key1:=wS2.Range("A1"), order1:=xlDescending, Header:=xlNo
    wS2.Range("A:A").Delete
   For i = 1 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
    wS1.Cells.Replace what:=wS2.Cells(i, "A"), replacement:=wS2.Cells(i, "B"), lookat:=xlPart
   Next i
End Sub

こんな感じになると思います。

※ 変更箇所はご自身で確認してみてください。m(_ _)m

No.2・4です。

ん~~~
何も変化なしですかぁ~~?
こちらではちゃんと置換できたのでそのままコードを記載したのですが・・・

一つ気になるのは、Zongaiさまの補足欄に
>A1に 建物 B1にBuilding
>A2に建物付属設備 B2にInteriorWork

とありますね。
お示しのコードはSheet2の2行目以降のループになっているので
当然1行目は項目行で置換データは2行目以降にあるものだとして投稿しました。

もし1行目から置換データがあるのであれば
前回のコードの変更が必要です。

Sub 置換2()
 Dim i As Long, la...続きを読む

Qエクセルで、通し番号を入力すると一覧表から該当の内容だけ抜きだせるようにしたい

番号 名前 電話番号 住所 備考
1 山田 000-0000 ◯町0-0 備考◯◯
2 田中 111-1111 ×町1-1 備考××
3 佐藤 222-2222 △町2-2 備考△△

このような、先頭に通し番号があり横に情報を入力している一覧表が《シート1》にあるとします

《シート2》に別の表組があり、特定の箇所に通し番号「1」を入力するとシート1に入力していた情報が各項目に自動反映する、といったエクセルを作成したいです。

この説明でわかるでしょうか…。
シート2は枠組みと各項目のタイトル(名前とか電話番号とか)と空欄がある状態で、通し番号を入力することで空欄に該当の内容が自動反映されるような表です。
多分「ここに1と数字を入れるとここのセルにはどのシートのどの情報が入る」といった関数を入れればいいと思うのですが、その関数がわかりません。


今現状、全て手入力で各ファイルやシートに入力しているので、こっちの表はあっているのにあっちの表は誤字脱字がある変更されていないなど、微妙な問題が発生しています。
通し番号管理ができれば大元に必要情報を集めておき、各々必要な情報を呼び出すようにして内容のズレを防げると思うので、どなたか上記関数がわかる方がいらっしゃいましたらご助力ください。
よろしくお願いします。

番号 名前 電話番号 住所 備考
1 山田 000-0000 ◯町0-0 備考◯◯
2 田中 111-1111 ×町1-1 備考××
3 佐藤 222-2222 △町2-2 備考△△

このような、先頭に通し番号があり横に情報を入力している一覧表が《シート1》にあるとします

《シート2》に別の表組があり、特定の箇所に通し番号「1」を入力するとシート1に入力していた情報が各項目に自動反映する、といったエクセルを作成したいです。

この説明でわかるでしょうか…。
シート2は枠組みと各項目のタイトル(名前とか電話番号と...続きを読む

Aベストアンサー

VLOOKUP関数で十分です。

とりあえず同じシートのG列に数字を入れて、H,I,J,K列にそれぞれ値を表示させるとして考えてみましょう。

H2セル
 =VLOOKUP(G2,A2:E4,2,FALSE)
I2セル
 =VLOOKUP(G2,A2:E4,3,FALSE)
J2セル
 =VLOOKUP(G2,A2:E4,4,FALSE)
K2セル
 =VLOOKUP(G2,A2:E4,5,FALSE)

これが基本になります。
前の回答者さんはVLOOKUP関数の中にCOLUMN関数を使っていますが、それは3番目の引数が連続した数値になる事を考慮した応用です。

・・・
では、別のシートから値を参照する方法。
同じシートのセルを参照する場合は
 =セル番地
 =A1
のように指定しますが、
別のシートの値を参照するときは
 =シート名+!+セル番地
 =Sheet2!A1
のように指定します。
シート名が ”データベース1” なら
 =データベース1!A1
になるということです。
(全角半角大文字小文字は正確に記述しましょう)
質問の例では
 A2:E4
の範囲がこれに当たりますので
 シート1!A2:E4
のようにしてい参照します。

すると
H2セル
 =VLOOKUP(G2,シート1!A2:E4,2,FALSE)
I2セル
 =VLOOKUP(G2,シート1!A2:E4,3,FALSE)
J2セル
 =VLOOKUP(G2,シート1!A2:E4,4,FALSE)
K2セル
 =VLOOKUP(G2,シート1!A2:E4,5,FALSE)
となります。
質問文にある「特定の箇所」のセルをこの式の「G2」のところに指定してください。

あとはエラー対策や数式を入力したセルをコピーすることを考慮して若干の修正を加えるだけです。
するとNo.3の回答者さんの示す数式になりますね。

このように一つずつ考えて数式を【組み立てる】ようにしましょう。
いきなり全部作れるようになってもこの考え方は変わりません。

VLOOKUP関数で十分です。

とりあえず同じシートのG列に数字を入れて、H,I,J,K列にそれぞれ値を表示させるとして考えてみましょう。

H2セル
 =VLOOKUP(G2,A2:E4,2,FALSE)
I2セル
 =VLOOKUP(G2,A2:E4,3,FALSE)
J2セル
 =VLOOKUP(G2,A2:E4,4,FALSE)
K2セル
 =VLOOKUP(G2,A2:E4,5,FALSE)

これが基本になります。
前の回答者さんはVLOOKUP関数の中にCOLUMN関数を使っていますが、それは3番目の引数が連続した数値になる事を考慮した応用です。

・・・
では、別のシートから値を参照する方法。
同じシートの...続きを読む

Qエクセルで並んでる文字から1つずつ並べたい

こんにちは。
仕事でエクセルを使う機会が増えそれに関する質問です。
宜しくお願いします。

縦に文字がたくさん並んでいるところから文字を抽出したいのです。
例えば

東京都
新潟県
兵庫県
東京都
千葉県
千葉県
東京都
熊本県

と並んでる文字から文字がかぶらないように

東京都
新潟県
兵庫県
千葉県
熊本県

と文字を別の場所にならべたいのです。
どうしたらよいでしょうか。
宜しくお願い致します。

Aベストアンサー

重複削除方法を知りたいってことですよね?
こうだよ。リボンのデータ>重複削除

Q条件付き書式の設定の仕方

別の表にあるセルと同じものがあればセルに色を付けたいのです。

条件付き書式の設定で良いかと思いますが

例えば

=COUNTIF(A1:A11,D2)

この式の

A1:A11

この部分は$A1:$A11 のように絶対値での範囲指定しないとエラーになってしまいます。

この部分のデーターは時々追加などがありますので、$A1 列単位での範囲指定をしたいのですが
できないのでしょうか?

よろしくお願いいたします。

Aベストアンサー

>>一からやっていることを整理して書いていただけますか?
と書いたと思うんですが。

A列とB列はそれぞれ文字列で入っているのですか?データ型は同じ?
例示ではどれにも色はつきませんよね?
うまく行かないのは全部ですか?うまくいくデータといかないデータの例は挙げられますか?
条件付き書式にはどのように設定しているのか適用先と条件を書いてもらえますか?
再掲ですが、
>>つまり、見た目空白のセルにも色がついてしまいます
>ここには元々どのようなデータが入っていたのですか?

QIF関数について

A1~Z1の列の間に、特定の文字(たとえば”りんごの文字”)がセル内に含まれる場合(あかりんごなど)にその下のA2~Z2の列の間に記入された日付を抜き出す方法をご存知でしたら
どなたか教えていただけませんでしょうか、よろしくお願いします。

A2にあかりんごがあれば、B2の日付を抜き出そうとしています。

Aベストアンサー

では、HLOOKUP関数か、抜き出すのが日付ならSUMIF関数でもできるかと思います。

りんごを含む文字を検索値にする場合で、直接式にいれるなら「*りんご*」のようにしてください。

Q4142から653347と飛んでます。 これを4143からちゃんと並ぶにはどうすればいいでしょうか?

4142から653347と飛んでます。
これを4143からちゃんと並ぶにはどうすればいいでしょうか?

Aベストアンサー

これ、9から70に飛んでるよね。

①シート全体を選択
②どの行でもいいので右クリック
③再表示を選択

開いたかな?

Qエクセル 日付超過でポップアップを表示する方法

荷物の配送業務を担当しています。
単純な例で言いますと、A列には荷物名、B列には荷物の受領日、C列には発送予定日を入力します。
発送予定日は受領日から10日以内で行う事を原則としているため、作業者が10日以上の日付を入力する場合には、ポップアップで「日付超過」といったメッセージを表示したいです。(メッセージが表示されるだけで、日付が超過していても入力は可能としたいです)
条件付きや入力規則で設定できるのか、VBAで作らなければいけないのか、、全くの素人の為、ご指南頂ければと思います。

Aベストアンサー

>作業者が10日以上の日付を入力する場合には、ポップアップで「日付超過」といったメッセージを表示したいです。

ならば「入力規則」という機能を使いましょう。
「データ」→「データ ツール」→「データの入力規則」
です。

セルを指定して
「設定」タブの
 「入力値の種類」を「日付」、
 「データ」を「次に日付けより小さい」、
 「終了日」に「=受領日+10」 
 ※受領日は実際に入力されているセルを指定してください。(例:=A1+10)
「エラーメッセージ」タブの
 「無効なデータが入力されたらエラー メッセージを表示する」にチェックマークを付け
 「スタイル」を「注意」
 「タイトル」に「日付超過」など適切な語句を入力
 「エラー メッセージ」に「受領日より10日以内の日付を入力してください」など適切な語句を入力
これでOK。

質問者さん自身で「入力規則」について確認をし使い方を理解するようにしましょう。

なお、値をコピーして貼り付けたり、フィルで連続した日付を入力した場合「入力規則」は働きません。注意してください。


・・・余談・・・

ちゃんと動作確認してくださいね。
受領日を 3/1 としたとき、上の例では 3/10 までがメッセージを出さない期日になります。
また、受領日などの日付けは年を含む日付になっていないと意図した通りに機能しないことがあります。
(例:× 3/1、〇 2019/3/1)

>作業者が10日以上の日付を入力する場合には、ポップアップで「日付超過」といったメッセージを表示したいです。

ならば「入力規則」という機能を使いましょう。
「データ」→「データ ツール」→「データの入力規則」
です。

セルを指定して
「設定」タブの
 「入力値の種類」を「日付」、
 「データ」を「次に日付けより小さい」、
 「終了日」に「=受領日+10」 
 ※受領日は実際に入力されているセルを指定してください。(例:=A1+10)
「エラーメッセージ」タブの
 「無効なデータが入力されたらエラ...続きを読む


人気Q&Aランキング