現在下記のようなプログラム(一部)を使っています。
数式をコピーしているのですが、これを左側のセルが空白になったらコピーをやめるか、数式記入をやめる方法に変えたいのですが、どなたか、ご教授ください。
後で余計にコピーしたセルを消す作業を低減したいと思っています。
宜しくお願いします。
Range("E1").Select
ActiveCell.FormulaR1C1 = "専用コード"
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]=""ホンテン "",""ラ001"",IF(RC[-1]=""エーテン "",""ラ005"",IF(RC[-1]=""ビーテン "",""ラ007"",IF(RC[-1]=""シーテン "",""ラ008"",IF(RC[-1]=""ディーテン "",""ラ009"",IF(RC[-1]=""イーテン "",""ラ015"",IF(RC[-1]=""エフテン "",""ラ011"",IF(RC[-1]=""ジーテン "",""ラ014"",""""))))))))"
Range("E2").Select
Selection.Copy
Range("e3:e1500").Select
No.2ベストアンサー
- 回答日時:
ご質問のコードが途中で切れてしまっていますが、そのあとにE2の内容をpasteしているものと推測して…
普通にループでやるなら
For Each c In Range("E2:E" & Cells(Rows.Count, 4).End(xlUp).Row
c.FormulaR1C1 = Range("E2").FormulaR1C1
Next c
エクセルのオートフィルでやるなら
Range("E2").AutoFill Destination:=Range("E2:E" & Cells(Rows.Count, 4).End(xlUp).Row)
みたいな感じ。
ちなみに「D列が空白だったら」ではなく「D列の最終行まで」という形で記しています。
「D列が空白だったら」をそのまま記述するなら、
Do While~ や Do Untill~ などになろうかと思います。
No.3
- 回答日時:
こんにちは。
数式をコピー(正確にはセルすべてですね)はしていますが、貼り付け(ペースト)の記述がないですね。
E3:E1500を範囲選択してコードが終わっていますが、この範囲に貼り付けると言うことでしょうか。
この範囲の左隣のセルが空白になったらコピーをやめる、逆に言うと空白になるまでが貼り付ける範囲と言うことですね。
それから、SelectしてActiveCellにしてから処理しているようですが、このような処理は無駄です。Selectしないで直接処理しましょう。
と言うことで、こんな感じでしょうか。
Dim myRow As Long
Range("E1").FormulaR1C1 = "専用コード"
Range("E2").FormulaR1C1 = _
"=IF(RC[-1]=""ホンテン "",""ラ001"",IF(RC[-1]=""エーテン "",""ラ005"",IF(RC[-1]=""ビーテン "",""ラ007"",IF(RC[-1]=""シーテン "",""ラ008"",IF(RC[-1]=""ディーテン "",""ラ009"",IF(RC[-1]=""イーテン "",""ラ015"",IF(RC[-1]=""エフテン "",""ラ011"",IF(RC[-1]=""ジーテン "",""ラ014"",""""))))))))"
myRow = Range("D3").End(xlDown).Row
Range("E2").Copy Destination:=Range("E3:E" & myRow)
Range("E" & myRow + 1 & ":E1500").ClearContents
ご回答ありがとうございます。
>それから、SelectしてActiveCellにしてから処理しているようですが、このような処理は無駄です。Selectしないで直接処理しましょう。
ご指摘、ごもっともです。
ありがとうございました。
大変参考になりました。
本当にありがとうございました。
No.1
- 回答日時:
Sub test()
Cells.CurrentRegion.Columns(5).Formula _
= "=INDEX(" _
& "{"""";""ラ001"";""ラ005"";""ラ007"";""ラ008"";""ラ009"";""ラ015"";""ラ011"";""ラ014""}" _
& ",SUMPRODUCT(" _
& "COUNTIF(D1," _
& "{""ホンテン "";""エーテン "";""ビーテン "";""シーテン "";""ディーテン "";""イーテン "";""エフテン "";""ジーテン ""}" _
& ")*ROW($1:$8))+1)"
End Sub
1) CurrentRegion については、ヘルプで確認してください。
こんな時に使う為のものです。
本来、テーブル形式になっているExcelシートは
「表は必ず、空白行と空白列に囲まれている。」
「表の中には、空白行と空白列を作らない。」
というルールで作られるべきものなので、
適合していれば扱いが楽になる好例です。
2) 例示された数式で、"ホンテン "など、後ろに半角スペースが付いていますので、
そのまま反映させました。
3) VBAに関するご質問ですが、例示された数式は、Excel2007以降のバージョンでしか使えないので、
汎用式になおしました。
例示された式の右辺エクセル数式の RC[-1]= を、D1= に置換すれば、原型の数式でもいける筈です。
4) Excel数式レベルの話ですが、数式の中にリストを組み込むのは、あまり感心しません。
セル範囲に作ったリスト(テーブル)を、セル範囲として参照する方が、
数式も組み易く、より高度に応用でき、ファイルも軽く済みます。
5) 関連の質問も拝見しました。
私ならどうするか、真面目に考えました。
お求めになっているものが、「何を持って良しとする」のかが、
把握できていないので、期待に添えなかったらスミマセン。
6) 私はExcel数式あまり得意じゃありません。
早速にありがとうございました。
大変参考になりましたよ。
>6) 私はExcel数式あまり得意じゃありません。
にも関わらず、的確なアドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- その他(データベース) 「1004:アプリケーション定義またはオブジェクト定義のエラー」への解消方法に関して 1 2023/07/09 11:47
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
関数TRANSPOSEで空白セルを0に...
-
数式による空白を無視して最終...
-
Excelで"0"を空白に変換する方法
-
Excel:関数が入っているセルに...
-
空白セル内の数式を残したまま...
-
Excel > ピボットテーブル「(空...
-
OpenOfficeでのワイルドカード...
-
Excel 特定セルの数値を参照し...
-
エクセルで、「複数のセルの中...
-
vlookup にて、返す値が、空白...
-
VLOOK関数で作った請求書で、¥...
-
リンクされているセルを空白と...
-
エクセルで上の行の値を自動的...
-
エクセルで、合計をもとめたい...
-
エクセルの数式で教えてください。
-
時間の差し引き 元セルが空白セル
-
【EXCEL】空白でないセルの位置...
-
Excel関数 直近3回分の出庫平均...
-
列の複数ある空白セルを飛ばし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
エクセルでCSVを編集するとき、...
-
ピボットテーブルで空白セルの...
-
excel2010 空白セルにのみ貼り...
-
Excel > ピボットテーブル「(空...
-
空白セル内の数式を残したまま...
-
「データ要素を線で結ぶ」がチ...
-
エクセルで、「複数のセルの中...
-
Excelで、入力文字の後に自動で...
-
エクセル 連番が途切れていると...
-
《Excel2000》SUMPRODUCT関数で...
-
SUMIFS関数で「計算式による空...
-
【Excel】 csvの作成時、空白セ...
-
形式貼り付けの「空白を無視す...
-
Excel:関数が入っているセルに...
-
リンク先が空白若しくはゼロの...
-
エクセルで上の行の値を自動的...
-
エクセルにて負の時間を0:00と...
-
エクセルのグラフで式や文字列...
おすすめ情報