advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 13155 for 日付 (0.003 sec.)
[[20220129144835]]
#score: 2424
@digest: c34159c423dd6a3e86881a97b8469654
@id: 90290
@mdate: 2022-01-29T23:50:17Z
@size: 12434
@type: text/plain
#keywords: 前鈴 (126954), rtowrite (91094), rsource (35279), 付1 (27462), 鈴木 (21704), 前名 (16653), 字7 (15115), ュン (14968), 字6 (12329), 木7 (11240), 字4 (11010), 木8 (10049), 字3 (9970), 木1 (8881), 木4 (8817), 木6 (8781), 木2 (8245), 木3 (8208), 字2 (8065), ンコ (7812), 木5 (7364), 付日 (7327), 字1 (7268), xlcelltypeblanks (6199), 名前 (5859), 数字 (5411), 期状 (5399), 日付 (5177), activecell (4269), 行__ (3861), コ) (2939), 土) (2460)
『空白セルの選択方法』(ジュンコ)
初心者です。 すみませんが、どなたか優しい方教えてください。 会社でマクロを使用しようと頑張っているのですが、つまずいています。 A1:A10の間に空白セルがあるか検索し、あればそのセルを選択したいです。 下記のような記述をしたのですが。。。 Dim a As Range Set a = Range("A1:A10").SpecialCells(xlCellTypeBlanks) A1:A10の全部セルが空白なのに、A1セルを選択してくれません。 どうしてでしょうか? < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- セルを指定しただけで、指定したセルを選択する コードが記述されてません。 ところで、セルを選択した後どうするのですか? たいていはセルを選択しなくても指定したセル に対する処理を実行できます。 (通りすがり) 2022/01/29(土) 15:01 ---- Set a = Range("A1:A10").SpecialCells(xlCellTypeBlanks) a.Select '←aの範囲を選択する (半平太) 2022/01/29(土) 15:12 ---- 回答ありがとうございます。 a.selectは、知っているんですが、 該当するセルがありませんってエラーが出てしまいます。 何故でしょうか? (ケイコ) 2022/01/29(土) 15:17 ---- >該当するセルがありませんってエラーが出てしまいます。 それを先に言ってくださいよ。 そのシートが1度も使われたことがないからです。 無理やり使ったらどうですか? Sub test() Dim a As Range If ActiveSheet.UsedRange.Row <= 10 Then Cells(11, "A") = "Dummy" Cells(11, "A") = Empty End If Set a = Range("A1:A10").SpecialCells(xlCellTypeBlanks) a.Select End Sub (半平太) 2022/01/29(土) 15:20 ---- 半平太さん。回答ありがとうございます。 記述してくれたものでしたら、A1からA10セルの間で、空白セルを探してくれるんですか? もし、A1が空白セルだったら、A1セルを選択。 もし、A1セルが埋まっていたら、A2セルを選択するみたいな。 (ジュンコ) 2022/01/29(土) 15:54 ---- 初心者なので、汚い記述ですみませんが、 この記述で実行すると、いずれA12までセルが埋まると、 Set d = Range("A1:A12").SpecialCells(xlCellTypeBlanks)で該当するセルがありませんってエラーがでます。希望としては、A1からA12までのセルが埋まったら、B1からB12セルに移動してほしいのに。 それから、Cへ Sub Macro1() Dim x, y As String x = "Sheet1" y = "Sheet2" Worksheets(y).Select Range("A1").Select sub1: Dim a, b, c As String a = ActiveCell.Value b = ActiveCell.Offset(0, 1).Value c = ActiveCell.Offset(0, 2).Value Stop Sheets(x).Select Dim d As Range Set d = Range("A1:A12").SpecialCells(xlCellTypeBlanks) If d Is Nothing Then GoTo sub2 End If d.Select ActiveCell.Value = a ActiveCell.Offset(1, 0).Value = b ActiveCell.Offset(2, 0).Value = c sub10: Worksheets(y).Select ActiveCell.Offset(1, 0).Select If ActiveCell = "" Then GoTo sub10 Else GoTo sub1 End If sub2: Dim e As Range Set e = Range("B1:B12").SpecialCells(xlCellTypeBlanks) If e Is Nothing Then GoTo sub4 End If e.Select ActiveCell.Value = a ActiveCell.Offset(1, 0).Value = b ActiveCell.Offset(2, 0).Value = c GoTo sub10 sub4: Dim g As Range Set g = Range("C1:C12").SpecialCells(xlCellTypeBlanks) If g Is Nothing Then GoTo sub100 End If g.Select ActiveCell.Value = a ActiveCell.Offset(1, 0).Value = b ActiveCell.Offset(2, 0).Value = c GoTo sub10 sub100: End Sub (ジュンコ) 2022/01/29(土) 16:05 ---- 似たような質問がありますので、参考に。 [[20220128180229]] (参考) 2022/01/29(土) 16:24 ---- 断片的な話をされても、解決には中々近づけませんよ(無駄な時間が過ぎるだけです)。 何をしたいのか、その仕様を明確にしていただく必要があります。 1.Sheet1とSheet2の初期状態がどうなっているのか 2.それがどうなればいいのか そのサンプルをアップしてください。 (半平太) 2022/01/29(土) 17:29 ---- 半平太さん。すみません。 Sheet1には、A1セルに名前、A2セルに日付、A3セルに数字。 そして、A4セルに名前と同じ順番で、A12セルまであります。 また、C列、D列にも同じ順番にあります。 Sheet2には、A1セルに名前、B1セルに日付、C1セルに数字が入っていて、 それらがA15まで入っています。それらを、Sheet1の空白セルになっているB1セル、 B2セル、B3セルに入れ込みたいです。 Sheet1は、縦列フォーマットになっていて、Sheet2は、横列フォーマットなんですよ。 お手数かけて、すみません。 宜しくお願いします。 (ジュンコ) 2022/01/29(土) 18:02 ---- 初期状態と希望する結果がわかりません。 全部空白なのか、一部空白なのか(飛び飛びに空白なのか)? 何故空白にこだわる必要があるのかが伝わってこないです。? ご説明からは、こんなものしか思いつかないです。 <Sheet1> <Sheet2> 行 __A__ _B_ _C_ 行 ___A___ ___B___ ___C___ 1 名前1 1 名前1 日付1 数字1 2 日付1 2 名前2 日付2 数字2 3 数字1 3 名前3 日付3 数字3 4 名前2 4 名前4 日付4 数字4 5 日付2 5 名前5 日付5 数字5 6 数字2 6 名前6 日付6 数字6 7 名前3 7 名前7 日付7 数字7 8 日付3 8 名前8 日付8 数字8 9 数字3 9 名前9 日付9 数字9 10 名前4 10 名前10 日付10 数字10 11 日付4 11 名前11 日付11 数字11 12 数字4 12 名前12 日付12 数字12 13 名前13 日付13 数字13 14 名前14 日付14 数字14 15 名前15 日付15 数字15 もう一度お聞きします。 「初期状態」と「希望する結果」を上の様な図の形で示してください。 (半平太) 2022/01/29(土) 18:34 ---- <Sheet1> <Sheet2> 行__A__ _B_ _C_ _D_ 行___A___ ___B___ ___C___ 1 名前 名前 1 鈴木1 1/28 1 2 日付 日付 2 鈴木2 1/28 2 3 数字 数字 3 鈴木3 1/28 3 4 名前 名前 4 鈴木4 1/28 4 5 日付 日付 5 鈴木5 1/29 5 6 数字 数字 6 鈴木6 1/29 6 7 名前 名前 7 鈴木7 1/29 7 8 日付 日付 8 鈴木8 1/29 8 9 数字 数字 9 鈴木9 1/29 9 10 名前 名前 10 鈴木10 1/29 1 11 日付 日付 11 鈴木11 1/29 2 12 数字 数字 12 鈴木12 1/30 2 13 鈴木13 1/30 3 14 鈴木14 1/30 4 15 鈴木15 1/30 5 初期は、上記のようになっています。 これを下記のようにしたいです。 <Sheet1> <Sheet2> 行__A__ _B_ _C_ _D_ 行___A___ ___B___ ___C___ 1 名前 鈴木1 名前 鈴木5 1 鈴木1 1/28 1 2 日付 1/28 日付 1/29 2 鈴木2 1/28 2 3 数字 1 数字 5 3 鈴木3 1/28 3 4 名前 鈴木2 名前 鈴木6 4 鈴木4 1/28 4 5 日付 1/28 日付 1/29 5 鈴木5 1/29 5 6 数字 2 数字 6 6 鈴木6 1/29 6 7 名前 鈴木3 名前 鈴木7 7 鈴木7 1/29 7 8 日付 1/28 日付 1/29 8 鈴木8 1/29 8 9 数字 3 数字 7 9 鈴木9 1/29 9 10 名前 鈴木4 名前 鈴木8 10 鈴木10 1/29 1 11 日付 1/28 日付 1/29 11 鈴木11 1/29 2 12 数字 4 数字 8 12 鈴木12 1/30 2 13 鈴木13 1/30 3 14 鈴木14 1/30 4 15 鈴木15 1/30 5 (ジュンコ) 2022/01/29(土) 19:08 ---- 冷やかしですけど、 その例では、半平太さんの質問に真摯に答えたとは思いにくいですよ。 今回の質問のキモは空白セルですよね? 上記例では空白を調べる必要は全くないです。 回答者が知りたいのは、例えば下記B列の様に、 「名前、日付、数字」のブロックごと空白になっているところに、 Sheet2のリストから前から順に転記したい、であるとか、 D列の様に、名前だけ記入されているところに、対応するデータを転記したいだとか、 そういう具体例だと思いますよ。 <Sheet1> 行__A__ _B_ _C_ _D_ 1 名前 名前 鈴木1 2 日付 日付 3 数字 数字 4 名前 佐藤1 名前 鈴木2 5 日付 1/28 日付 6 数字 1 数字 7 名前 名前 鈴木3 8 日付 日付 9 数字 数字 10 名前 佐藤2 名前 鈴木4 11 日付 1/29 日付 12 数字 2 数字 提示例を叶えるだけなら、下記マクロでも良いわけですよね。 Sub Macro1() Dim i As Long, r As Long, c As Long Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") c = 2 For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row r = ws1.Cells(Rows.Count, c).End(xlUp).Row Select Case r Case 1 r = 1 Case 12 r = 1 c = c + 2 Case Else r = r + 1 End Select ws2.Cells(i, 1).Resize(, 3).Copy ws1.Cells(r, c).PasteSpecial Transpose:=True Next i End Sub (参考) 2022/01/29(土) 20:12 ---- なるほどです。ようやく分かりました。 Sub Macro1() Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim rSource As Range Dim rToWrite As Range Dim aRow As Range 'Ws2の元データ範囲の一つの行を格納 Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") Set rSource = Ws2.Range("A1:C15") '元データ範囲 Set rToWrite = Ws1.Range("B1") '第一回書き込み先(先頭セル) For Each aRow In rSource.Rows '1行ずつ取り出す '行列を入替えてコピペ aRow.Copy rToWrite.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True '次の書き込み先をセットする If rToWrite.Row + 3 <= 12 Then '下限まで余裕あり Set rToWrite = rToWrite.Offset(3) '3行下に移動 Else '先頭行に戻って、2列右隣から書き始める必要がある Set rToWrite = Ws1.Cells(1, rToWrite.Column + 2) End If Next End Sub <Sheet1 シート 実行後結果図> 行 __A__ __B__ __C__ __D__ _E_ ___F___ _G_ ___H___ 1 名前 鈴木1 名前 鈴木5 鈴木9 鈴木13 2 日付 1/28 日付 1/29 1/29 1/30 3 数字 1 数字 5 9 3 4 名前 鈴木2 名前 鈴木6 鈴木10 鈴木14 5 日付 1/28 日付 1/29 1/29 1/30 6 数字 2 数字 6 1 4 7 名前 鈴木3 名前 鈴木7 鈴木11 鈴木15 8 日付 1/28 日付 1/29 1/29 1/30 9 数字 3 数字 7 2 5 10 名前 鈴木4 名前 鈴木8 鈴木12 11 日付 1/28 日付 1/29 1/30 12 数字 4 数字 8 2 (半平太) 2022/01/29(土) 20:45 ---- すごく難しい記述なんで、絶対に初心者の私にはわかりませんでした。 教えて下さり、誠にありがとうございます。 厚かましいですが、質問させてください。 例えば、Sheet1のA15までになった場合は、 どの記述を変更すれば、いいのでしょうか? また、例えばですが、Sheet2が名前、日付、数字、内容 Sheet1も、名前、日付、数字、内容の4項目になった場合は、 どの記述を変更すれば、いいのでしょうか? 勉強しますので、教えて頂きたいです。 宜しくお願いします。 (ジュンコ) 2022/01/29(土) 21:20 ---- >例えば、Sheet1のA15までになった場合は、 > '次の書き込み先をセットする > If rToWrite.Row + 3 <= 12 Then '下限まで余裕あり ↓ If rToWrite.Row + 3 <= 15 Then '下限まで余裕あり >また、例えばですが、Sheet2が名前、日付、数字、内容 >Sheet1も、名前、日付、数字、内容の4項目になった場合は、 > Set rSource = Ws2.Range("A1:C15") '元データ範囲 ↓ Set rSource = Ws2.Range("A1:D15") '元データ範囲 > Set rToWrite = rToWrite.Offset(3) '3行下に移動 ↓ Set rToWrite = rToWrite.Offset(4) '4行下に移動 (半平太) 2022/01/29(土) 21:46 ---- 勉強になりました。本当にありがとうございました&#128557; (ジュンコ) 2022/01/30(日) 08:50 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202201/20220129144835.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97023 documents and 607970 words.

訪問者:カウンタValid HTML 4.01 Transitional