[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データがなくても文字を返す方法』(黒豹)
説明が少々難しいので以下の表をご参照下さい。 A B C 1 振込完了リスト 2 A支店 10000 3 B支店 10000 4 C支店 10000 5 6 振込エラーリスト 7 A支店 5000 8 B支店 5000 9 C支店 5000
上記のようなリストに対し、C列に文字を 返したいと思います。
A B C 1 振込完了リスト 2 A支店 10000 済 3 B支店 10000 済 4 C支店 10000 済 5 6 振込エラーリスト 7 A支店 5000 未 8 B支店 5000 未 9 C支店 5000 未
それぞれの行には特に完了などを示す コードなどは全く存在せず、完了リストと エラーリストの間が1行空いているだけです。 このような条件で、表題(セルA1、A6)から C列に文字を返す事は可能でしょうか? 尚、リストの行数は増減し固定ではありません。 ご回答、よろしくお願い致します。
済または未を表示する条件は何ですか? (Hatch)
各項目の表題(上記の例ではセルA1、A6)の 文字での判断になります。 表題の下にリストが並び、1行空いて別の項目 (表題がありリストが並ぶ)が続きます。 (黒豹)
一応テストはしてみたんですが、、ひょっとしたら??かも?です。 どうでしょう? Option Explicit Sub てすと() Dim MyA As Variant, MyAry() As Variant Dim i As Long, Myflag As Long With Worksheets("Sheet1") MyA = .Range("A1", .Range("A65536").End(xlUp)).Resize(, 2).Value ReDim MyAry(1 To UBound(MyA, 1), 1 To 1) For i = 1 To UBound(MyA, 1) If InStr(1, MyA(i, 1), "完了") > 0 Then Myflag = 1 ElseIf InStr(1, MyA(i, 1), "エラー") > 0 Then Myflag = 2 ElseIf IsEmpty(MyA(i, 1)) Then Myflag = 0 End If If Not IsEmpty(MyA(i, 2)) Then Select Case Myflag Case 1 MyAry(i, 1) = "済" Case 2 MyAry(i, 1) = "未" End Select End If Next With .Range("C1") .EntireColumn.ClearContents .Resize(UBound(MyA, 1)).Value = MyAry .EntireColumn.AutoFit End With End With Erase MyA, MyAry End Sub あはははは、さっそくちょっと訂正(;^_^A あせあせ・・・ (SoulMan)
無理やりなので、落とし穴があるかも・・・ さらに、無駄がありそうですが〜
C2 =IF(AND(A2<>"",B2<>""),IF(C1="済","済",IF(ISERROR(C1*1),"未","済")),"") 以下、必要なところまでコピー
(キリキ)時間が無いので、書き逃げになりそうです(^_^;) 15:40 修正
C2に=MID("済未",COUNTBLANK(A$2:A2)+1,COUNT(B2))として、 下にフィルドラッグするというものは、どうでしょう? (LOOKUP)
横から失礼します。 LOOKUPさん、よくまあこんなやり方思いつくものですねえ。 メモ、メモ・・・。 (SS)
す・すごい!! MID関数のこういった使い方を始めて知りました!! はっきり言って、感動してます〜♪ 〆\(.. )メモメモ (キリキ)
やりたいことを要約すると
A列で振込エラーリストの次の行から全ての C列に「未」を記載する。また 2行から 振込エラーリスト行の2行上まで「完」を記載する。
こういうことでしょか。 であれば,下記マクロを実行すれば出来ると思います。
Sub 未を記載()
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastrow
If Cells(i, 1) = "振込エラーリスト" Then
For j = i + 1 To lastrow Cells(j, 3) = "未" Next
For k = 2 To i - 2 Cells(k, 3) = "完" Next
End If
Next
End Sub
(なお)
A列に表題とその下にデータがあれば,空欄行まで記載できます。
Sub 済未を記載()
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
''' 「未」記載
For i = 1 To lastrow
If Cells(i, 1) = "振込エラーリスト" Then start未 = i + 1 Exit For End If
Next
For j = start未 To lastrow + 1
If Cells(j, 1) = "" Then end未 = j - 1 Exit For End If
Next
For k = start未 To end未
Cells(k, 3) = "未" Next
''' 「済」記載
For i = 1 To lastrow
If Cells(i, 1) = "振込完了リスト" Then start済 = i + 1 Exit For End If
Next
For j = start済 To lastrow + 1
If Cells(j, 1) = "" Then end済 = j - 1 Exit For End If
Next
For k = start済 To end済
Cells(k, 3) = "済" Next
End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.