- ベストアンサー
エクセルの計算処理について
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.3 です。すみません、カウンターを 2 つ用意する必要が全くありませんでした。なので一応、減らした修正版を掲載します。まあ修正前のコードでも、別に誤った結果が出るということではないのですが、意味がないので。 Option Explicit Sub Macro1() Dim i As Long, cnt As Long For i = 1 To 1000 '処理の開始行と終了行の行番号を指定 If Cells(i, "a").Value <> "" Then cnt = 0 End If If Cells(i, "f").Value <> "" Then cnt = cnt + 1 If cnt = 1 Then Cells(i, "g").Value = Cells(i, "f").Value End If End If Next End Sub
その他の回答 (4)
- okormazd
- ベストアンサー率50% (1224/2412)
Sub test() Dim r As Integer, rmax As Integer, c As Range rmax = Range("C" & Rows.Count).End(xlUp).Row 'データ範囲の最大行取得 For Each c In Range("A1:A" & rmax) 'A1から検索しているが検索範囲は適宜 If c.Value <> "" Then 'A列のデータ範囲で、空白じゃないセルを検索 r = c.Row 'その行を取得 While Range("F" & r).Value = "" 'その行以下でF列の空白でないセルを検索 r = r + 1 Wend Range("G" & r) = Range("F" & r) '最初に見つかったF列の空白でないデータをG列の同じ行に書き込み End If Next End Sub 必ずデータがあるとして処理しているので、データがなければ予期せぬ結果になるかもしれないが、それには対応していない。適宜修正をしてください。
お礼
どうもありがとうございました。 わかりやく、説明をも加えていただきましたこと、厚くお礼申し上げます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
VBA は大して得意じゃないですが。まあ地道に。 Option Explicit Sub Macro1() Dim i As Long, c1 As Long, c2 As Long For i = 1 To 1000 '処理の開始行と終了行の行番号を指定 If Cells(i, "a").Value <> "" Then c1 = c1 + 1 c2 = 0 End If If Cells(i, "f").Value <> "" Then c2 = c2 + 1 If c2 = 1 Then Cells(i, "g").Value = Cells(i, "f").Value End If End If Next End Sub
お礼
迅速なご対応、どうもありがとうございました。 厚くお礼申し上げます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No1です。 次のような式がベターでしょう。 =IF(F2="","",IF(COUNT(INDEX(F$2:F2,MATCH(10^10,A$2:A2)):F2)=1,F2,"")) A17セルから下行が対象ならG17セルには次の式を入力して下方にドラッグコピーします。 =IF(F17="","",IF(COUNT(INDEX(F$17:F17,MATCH(10^10,A$17:A17)):F17)=1,F17,""))
お礼
どうもありがとうございました。 とても勉強になりました。 厚くお礼申し上げます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばで表が2行目から下方にあるとしたらG2セルには次の式を入力して下方にドラッグコピーします。 =IF(F2="","",IF(COUNT(INDEX(F:F,MATCH(10^10,A$2:A2)):F2)=1,F2,"")) A17セルから下行が対象ならG17セルには次の式を入力して下方にドラッグコピーします。 =IF(F17="","",IF(COUNT(INDEX(F:F,MATCH(10^10,A$17:A17)):F17)=1,F17,""))
お礼
どうもありがとうございました。 とても勉強になりました。 感謝です。
お礼
どうもありがとうございました。 確認のため、実際テストしてみましたが、バッチリでした。 感謝です!