【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

お世話になります。
以前質問した中で、別シートにデータを5列づつ
下に追加していくにはどうしたら良いかと言う質問をさせていただきました。

https://oshiete.goo.ne.jp/qa/11051972.html

上記回答で解決したのですが、
For j = 4 To .Cells(i, 1).End(xlToRight).Column Step unit
だと繰り返したくない列も動いてしまい、
繰り返す列範囲がD~W列のため
For j = 4 to 24 Step unit に変更しました。
すると今度は空白がある行も転記してしまい、困っています。

繰り返す範囲はD~W列まで5列毎に繰り返す
5列毎の最初のセルが空白か[0]であれば転記しない

どうぞよろしくお願いします。

「特定の列範囲の中で最終列を指定」の質問画像

A 回答 (2件)

似ていますが、、、、



Sub Copies()
Const SRow = 3: Dim LRow As Long
Dim sht1 As Worksheet: Dim sht2 As Worksheet
Dim i As Long, j As Long, k As Long
Const UWide = 5
'===================
Set sht1 = Worksheets("Sheet1")
Set sht2 = Worksheets("Sheet2")
'===================
Application.ScreenUpdating = False
With sht1
LRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(SRow, 1).Resize(1, 3 + UWide).Copy sht2.Cells(1, 1)
k = 2
For i = SRow + 1 To LRow
For j = 4 To 23 Step UWide
If WorksheetFunction.CountA(.Cells(i, j).Resize(1, UWide)) > 0 Then
.Cells(i, 1).Resize(1, 3).Copy sht2.Cells(k, 1)
.Cells(i, j).Resize(1, UWide).Copy sht2.Cells(k, 4)
k = k + 1
End If
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

遅くなってすみません。
理想通りにできました!
ありがとうございました!

お礼日時:2019/04/10 00:16

こんにちは



ほとんど理解していませんが・・・

>繰り返す範囲はD~W列まで5列毎に繰り返す
>5列毎の最初のセルが空白か[0]であれば転記しない

最初の条件はループの範囲を
 Application.Min(.Cells(i, 1).End(xlToRight).Column, 23)
などにしておけば良さそう。

二番目の条件は、ループ内の始めに
 Cells(row, i).Value 
(↑rowは行に当たる変数:何を使っているのか知らないので)
を見て判断する処理を入れるだけで宜しいかと。
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2019/04/10 00:15

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

このQ&Aを見た人はこんなQ&Aも見ています

この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で、上下並んだセルのペアに対して、条件に当てはまるペアの個数を数えるには?

例えば、A1からZ1までのセルに、
af fe pr oy uu fi ko ru ir ny fh oh pe ny gg hd ul kd ty uk oi nr fy gk dq te
と1つのセルにつき2文字ずつデータが入っていて、
さらに、A2からZ2までのセルに、
ai wp hi mi ps nu fd ij di mi fg er eq vg yr lk fr af xv ui ft gh bv wo pg fr
と、これも1つのセルに付2文字ずつデータが入っているとします。
上下2段になっているわけです。
上下ペアが26個あるという形です。

そうした場合に、
「上の段にgが含まれていて、下の段にrが含まれているペアはいくつあるか」
という問題の答えを求める方法はあるでしょうか。

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

Aベストアンサー

例えば、こちら↓のようなこと?
 =COUNTIFS(A1:Z1,"*g*",A2:Z2,"*r*")

Excel2007以降なら、上記の関数で対応できます。

QExcelの関数で、下記のように報告値が自動で表示されるようにしたいです。 基本的には有効数字2桁表

Excelの関数で、下記のように報告値が自動で表示されるようにしたいです。
基本的には有効数字2桁表示なのですが、A列に入力した下限値の桁までの表示にしたいです。3行目、4行目のように有効数字1桁の場合もあります。5行目のような場合もあります。1日もがいてみましたが、どなたかご教授頂けたら大変助かります。

Aベストアンサー

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値桁数に応じた10のべき乗を
使っていますが、下限値が3桁の場合に1000を使うと0.995をもとに
条件付き書式で判断するので、1以下として処理されます。

添付画像の[下限値の桁数に応じた報告値]のように、条件付き書式
設定なしでの数値を見てもらえば理解できると思います。
(C列の計算式と条件付き書式は、No.4の回答にあるもの)

[下限値の桁数に応じた報告値]列での数式
 =IF(B7<A7,"<"&A7,ROUND(B7*10^G7,IF(INT(B7)=0,0,LEN(INT(B7))*-1))/10^G7)

[下限値の桁数]列での数式
 =LEN(A7)-FIND(".",A7)

報告値の表示桁数をどのように処理するかを、もっと検証しないと
丸めの値が変わってくるので、質問者自身が判断してください。

No.4の回答者です。
No.5の回答者さんが指摘しているように、報告値で表示をする桁の
問題だと思います。

No.4の回答では、報告値に合わせるために強引な条件付き書式での
表示をしているので、計算値の0.995283を小数点一桁の1.0と表示
するようにしていますが、[下限値の桁数]での増減によって条件が
変わるので、ROUND関数での桁数の指定と条件付き書式での桁数の
指定がずれると丸める値の桁数が違うので1.00の表示になるのです。

> 数式の100を1000にしてみましたが
これについても、報告値をもとに下限値...続きを読む

Q保存先フォルダとファイル名について

いつもお世話になっております。
保存をかける際にダイアログボックスを出したく、
またシートA1には保存先、B1にはファイル名を指定しておきたいのですが
どのようにすればよろしいでしょうか?
色々調べたのですが解決できず、アドレスどうぞよろしくお願いします。

ちなみにEXCEL2013を使用しています。

Sub CsvExportWithQuotation()
 Dim FileName As Variant
 Dim Rng As Range
 Dim LastCell As Range
 Dim c As Range
 Dim i As Long
 Dim strLine As String, fname As String, fpath As String

fpath = cells(1,1).value
fname = cells(1,2).value
 FileName = Application.GetSaveAsFilename( fpath & "¥" & fname,fileFilter:="CSVt Files (*.csv), *.csv")

保存先は指定出来るのですが、ファイル名が表示されません。
何卒よろしくお願い致します。

いつもお世話になっております。
保存をかける際にダイアログボックスを出したく、
またシートA1には保存先、B1にはファイル名を指定しておきたいのですが
どのようにすればよろしいでしょうか?
色々調べたのですが解決できず、アドレスどうぞよろしくお願いします。

ちなみにEXCEL2013を使用しています。

Sub CsvExportWithQuotation()
 Dim FileName As Variant
 Dim Rng As Range
 Dim LastCell As Range
 Dim c As Range
 Dim i As Long
 Dim strLine As String, fname As String, fp...続きを読む

Aベストアンサー

No1です。

>セルではなく直接書いてみたのですが
>ファイル名はFALSE.csv と表示がされました。
ご提示の通りの式を与えれば、そうなります。

第一引数をファイル名と解釈して評価しようとしますので、
> InitialFilename = "保存先&ファイル名"
 1)まず式をそのまま評価すると False(論理値)となり
 2)要求されているのは文字列なので、変換した"FALSE"を値として採用
 3)拡張子「.csv」が付け加えられて
 4)ダイアログのファイル名欄に「FALSE.csv」と表示
という処理がなされているものと思います。

>セルに関数も入っていないのに謎です
セルの値を参照していないのであれば、セルの状態がどうであるかは関係ないはずです。
(関係したら、その方がおかしい)

Qエクセル データの入力規制「リスト」でこんな事できますか?

エクセルでこんな事できますか?
並列したQ列 R列があり、
また、添付には表記されていませんが、
その隣にS列 T列があり、
Q列、S列は、「コード」という事で、
Q列は1,2,3,4,5,6,7,8,9,10
S列は11,12,13,14,15,16,17,18,19,20
です。
R列は、「材質」でQ列に対応し、添付ファイルのように10項目
T列も「材質」でS列に対応し、10項目あります。

R列 T列「材質」を見て Q37セルにコードを入力したく、
その時、ドロップダウンリストとして、R列、続けて、T列の項目を表示したいです。

データの入力規制「リスト」で、できそうかと思い、頑張っていたのですが、
うまくいかず困っています。
データの入力規制「リスト」にはこだわりませんが、
マクロはできるだけ使わず完成したく思います。
エクセル詳しいかたご教授よろしくお願いします。

Aベストアンサー

あー…
入力規則はあくまでも、データ入力を補助するための機能ですからリストと違う文字を反映させることはできませんよ。

例えばリストデータは、01りんご・02プリンのように作って置いて、コードを出す時に
=LEFT(Q37,2)*1
と入れておくとか?

Q日付の作成方法を教えて下さい。

縦カレンダーを作りたく、色々検索して月初日を作ることは出来ました。
そこから、+1してカレンダーを作りたいのですが上手く出来なかった為、質問させていただきました。


コード
Sub 日付作成()

Dim d As Date
d = Date ' 本日日付
Range("A2").Value = DateSerial(Year(d), Month(d), 1)

Dim tenkiws As Worksheet
Set tenkiws = Worksheets("転記先")

Dim i As Long
For i = 4 To 63 Step 2
tenkiws.Cells(i, 1) = tenkiws.Range("A2") + 1
Next i

End Sub

やりたいこととしては、一行飛ばしに日付を加算させていくなのですが、上のコードだと4行目だけ変わって後は変わりません。
どうすれば63行目まで変えることが出来るのでしょうか?
ご教授宜しくお願い致します。

縦カレンダーを作りたく、色々検索して月初日を作ることは出来ました。
そこから、+1してカレンダーを作りたいのですが上手く出来なかった為、質問させていただきました。


コード
Sub 日付作成()

Dim d As Date
d = Date ' 本日日付
Range("A2").Value = DateSerial(Year(d), Month(d), 1)

Dim tenkiws As Worksheet
Set tenkiws = Worksheets("転記先")

Dim i As Long
For i = 4 To 63 Step 2
tenkiws.Cells(i, 1) = tenkiws.Range("A2") + 1
N...続きを読む

Aベストアンサー

Sub 日付作成()

Dim d As Date
d = Date ' 本日日付
Range("A2").Value = DateSerial(Year(d), Month(d), 1)

Dim tenkiws As Worksheet
Set tenkiws = Worksheets("転記先")

Dim i As Long
For i = 4 To 63 Step 2
tenkiws.Cells(i, 1) = tenkiws.Range("A2") - 1 + i / 2
Next i

End Sub

Qエクセルの使い方初心者です 数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいので

エクセルの使い方初心者です



数値が一定の数に満たないものを切り捨てて、残った数値の合計を出したいのですが最適な関数を教えてください

Aベストアンサー

こう言う事ですよね?

ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3BbssbMqmfD5tQ8h

尚、
ファイルは 必ず、
1度 エクセルで、
開き、
ローカル保存してください、

ローカル保存で なければ、
意味が 無いです。


そうすれば、
閲覧も、編集も、
叶うものと 思います。

QExcelで「令和」と表示されるのは5月1日にならないとだめですか?

「日本の新元号に関する Office の更新プログラム」というページ(下記)で、
「Windows と Office の更新プログラムを適用済みの場合でも、Windows 上で実行されている Office 製品は 2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しませんのでご注意ください。」
と書かれています。
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era

今月4月中に、Excelのセルに来月5月以降の年月日を入力した場合に、自動で「令和」という元号を表示させることはできないのでしょうか。

もし、できるということであれば、「2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しません」とはどのような意味なのでしょうか。

Aベストアンサー

>こちらでは、「4月17日以降にOfficeも更新されれば「令和元年」と表示されると思います」と書かれているんですが

その方は、Microsoftの方ではないですし個人の予想ですよね?公式が出ているのにそれを持ち出してどうするんですか?

5/1より前に新しい元号を表示したい場合は数式や表示形式で限定的に表示させる方法を色々な方が考え付いていますよ。
検索すればたくさん出てきます。

Q先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る

先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る場合はどのようになるのでしょうか。是非ともお教え頂きたくお願い致します。☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

No.1です。

↓の画像で説明します。

尚、大前提として⑩が入るのは1セルのみ!としています。

前回回答したように日付セルはシリアル値というのが前提なので、
画像では3行目をシリアル値にしています。
便宜上、G1セルに西暦年を、I1セルに月の数値を入力すると1か月のカレンダーになるようにしています。

G3セル(セルの表示形式はユーザー定義から d としています)に
=IF(MONTH(DATE($G1,$I1,COLUMN(A1)))=$I1,DATE($G1,$I1,COLUMN(A1)),"")

G4セルに
=TEXT(G3,"aaa")

という数式を入れG3・G4セルを範囲指定 → G4セルのフィルハンドルでAK列までコピー!

そしてSheet2のA列に祝日データ(シリアル値)を入力して、祝日の表を作っておきます。
最後にG14セルに
=IFERROR(IF(G3=WORKDAY(INDEX(3:3,MATCH("⑩",13:13,0)),2,Sheet2!$A:$A),"●",""),"")

という数式を入れフィルハンドルでAK列までコピーしています。

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

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

先般、下記のとおりご回答を頂きました。その節はありがとうございました。ところで、⑩が2つのセルに入る場合はどのようになるのでしょうか。是非ともお教え頂きたくお願い致します。☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

No.1です。

↓の画像で説明します。

尚、大前提として⑩が入るのは1セルのみ!としています。

前回回答したように日付セルはシリアル値というのが前提なので、
画像では3行目をシリアル値にしています。
便宜上、G1セルに西暦年を、I1セルに月の数値を入力すると1か月のカレンダーになるようにしています。

...続きを読む

Aベストアンサー

こんにちは!

https://oshiete.goo.ne.jp/qa/11060248.html
↑のサイトの件ですね。
前回投稿した者です。

前回アップした画像の配置通りだとします。

画像の配置では、G14・H14セルに「●」が入るコトはないので、
I14セルから以降に数式を入れます。

I14セルに
=IFERROR(IF(OR(WEEKDAY(I3,2)>5,COUNTIF(Sheet2!$A:$A,I3)),"",IF(INDEX($G13:G13,MATCH(WORKDAY(I3,-2,Sheet2!$A$1:$A$100),$G3:G3,0))="⑩","●","")),"")

という数式を入れフィルハンドルでAK14セルまでコピーしてみてください。

※ 前回、「祝日」データ範囲をSheet2のA列全体で検索していましたが、少し重いので
Sheet2のA1~A100セルとしています。m(_ _)m

Qエクセルで15分区切りを計算したい

15分単位でエクセルでタイムカード等の時間を計算したいですが、
15分の区切りが特殊で計算に困っています。
15分単位と言えば通常、0分・15分・30分・45分という区切りだと思いますが、
当社では、10分・25分・40分・55分の15分単位の区切りになっています。

エクセルで「CEILING」や「FLOOR」を使用して、計算表の作成を試みたのですが
0分・15分・30分・45分の区切りでの計算になっており

例えば
9:24出勤の場合
当社では9:25の表示にならなければならないのに
CEILINGを使用すると9:30の表示


17:46退社の場合
当社では17:40の表示にならなければならないのに
FLOORを使用すると17:45の表示になってしまいます。

10分・25分・40分・55分の15分単位の区切りでも計算できる方法は何かありませんでしょうか?

Aベストアンサー

0:10:00マイナス後、
ceiling floor 0:15:00 +0:15:00
とすればよいですが、
他に条件はありませんか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング